Конференция "Игры" » Помгите сделать простую игру на паскале. [Pascal, Windows]
 
  • Black-Death (07.06.07 17:11) [0]
    помогите плиз сделать какую нибудь простенькую игру на паскаале.
    Что нибуть типа Хайнойских башень или быки-коровы, или еще чтото вроде этого.
  • ArtemESC (07.06.07 18:06) [1]
  • homm © (07.06.07 18:26) [2]
    Давай поможем.
  • @!!ex_ (07.06.07 19:15) [3]
    Предлагаешь за тебя написать все? :)
    Я могу поделится модулем для работы с 3Д в паскале. ПРавда там нет заливки и текстур, только прямые линии и разрешение 320х200 естественно.
  • Black-Death (07.06.07 19:41) [4]
    да нет. Мне надо работать токо со встроеными модулями. И сдать нада завтра просто. По етому и прошу помочь, а то полный ппц мне будет :( :( :( :(
  • @!!ex_ (07.06.07 19:50) [5]
    > [4] Black-Death   (07.06.07 19:41)

    Ну скажи, что модуль сам написал. :))
    Короч. Если хочешь, накатаю сейчас тебе игру про башни.(Это где надо перенести с одного штыря на другой, при этом класть можно только на пустой штырь или на круг большего размера). Ты только требования озвучь. А то я те ща накатаю с ООП, мышой и в 3Д. :))
  • homm © (07.06.07 19:52) [6]
    > По етому и прошу помочь, а то полный ппц мне будет

    Дак давай поможем!
  • Black-Death (07.06.07 19:59) [7]

    > @!!ex_

    Сделай плиз. Токо со стандартными модулями. Типо с использованием Graph. Ничего сверх-естественного. Простенько :)
    Игру сделай которая делается легче. Либо ханойские башни, либо троянские кони(Типо где доска шахматная 3*3).
    Зарание огромнейшое спасибо
  • homm © (07.06.07 20:02) [8]
    > Зарание огромнейшое спасибо

    По внутреннему курсу этого сайта, это примерно 200-250 WMZ.
  • homm © (07.06.07 20:06) [9]
    > А то я те ща накатаю с ООП, мышой и в 3Д. :))

    Ты кстаи не компилируй, коли правда возьмешся. Пущай хоть соберет сам.
  • @!!ex_ (07.06.07 20:40) [10]
    > [9] homm ©   (07.06.07 20:06)

    Гыгыгы. и Парочка ошибок. Пущай ищет, разбирается.

    Вот код. Подскажу. Две ошибки в объявлении. И одна в логике.

    uses Graph, CRT;

    var
    grDriver: Integer;
    grMode: Integer;
    ErrCode: Integer;

    Towers:array[0..2,1..2] of integer;
    Current:integer;
    Move:boolean;
    MoveIndex:integer;
    RSIndex:integer;
    C:Byte;
    Procedure DrawTower(ID:integer);
    var
     Index:integer;
     Count:integer;
    begin
     if ID=Current then begin
       if Move then
         SetColor(4)
       else
         SetColor(3);
     end
     else
       SetColor(15);
     Count:=0;
     for Index:=0 to 4 do begin
       if Towers[ID,Index]<>0 then begin
         Rectangle(150+ID*160-Towers[ID,Index]*10,380-Index*20,170+ID*160+Towers[ID,Index]*10,400-Index*20);
         inc(Count);
       end
       else
         Break;
     end;
     Rectangle(150+ID*160,200,170+ID*160,400-Count*20);
    end;

    Procedure NewGame;
    begin
      Towers[0,0]:=5;
      Towers[0,1]:=4;
      Towers[0,2]:=3;
      Towers[0,3]:=2;
      Towers[0,4]:=1;
      Towers[1,0]:=0;
      Towers[1,1]:=0;
      Towers[1,2]:=0;
      Towers[1,3]:=0;
      Towers[1,4]:=0;
      Towers[2,0]:=0;
      Towers[2,1]:=0;
      Towers[2,2]:=0;
      Towers[2,3]:=0;
      Towers[2,4]:=0;
      Move:=false;
      Current:=0;
    end;

    var
     Index:integer;
    begin
    grDriver := Detect;
    InitGraph(grDriver, grMode,' ');
    ErrCode := GraphResult;
    if ErrCode = grOk then
    begin  { Do graphics }
      NewGame;
      while C<>#27 do begin
        ClearDevice;
        SetColor(15);
        OutTextXY(0,0,'Esc - Exit. N - New Game. Left/Right - Move. Space - Select');
        OutTextXY(0,20,'Create by @!!ex. Samara 2007');
        DrawTower(0);
        DrawTower(1);
        DrawTower(0);
        C:=Readkey;
        if C=#0 then begin
          C:=ReadKey;
          if C=#75 then begin
            if Current>0 then begin
              dec(Current);
             if Move then begin
               Move:=False;
               RSIndex:=-1;
               for Index:=0 to 4 do
                 if Towers[Current,Index]<>0 then
                   RSIndex:=Index;
               if (RSIndex=-1) or (Towers[Current+1,MoveIndex]<Towers[Current,RSIndex]) then begin
                 Towers[Current,RSIndex+1]:=Towers[Current+1,MoveIndex];
                 Towers[Current+1,MoveIndex]:=0;
               end;
             end;
           end;
          end;
          if C=#77 then begin
            if Current<2 then begin
              inc(Current);
             if Move then begin
               Move:=False;
               RSIndex:=-1;
               for Index:=0 to 4 do
                 if Towers[Current,Index]<>0 then
                   RSIndex:=Index;
               if (RSIndex=-1) or (Towers[Current-1,MoveIndex]<Towers[Current,RSIndex]) then begin
                 Towers[Current,RSIndex+1]:=Towers[Current-1,MoveIndex];
                 Towers[Current-1,MoveIndex]:=0;
               end;
             end;
          end;
        end;
        end;
        if (C=#32) and (Towers[Current,0]<>0) then begin
          for Index:=0 to 4 do
            if Towers[Current,Index]<>0 then
              MoveIndex:=Index;
          Move:=true;
        end;
        if (C='N') or (C='n') then
          NewGame;
      end;
      CloseGraph;
    end
    else
      Writeln('Graphics error:', GraphErrorMsg(ErrCode));
    end.

  • @!!ex_ (07.06.07 20:42) [11]
    Ты когд найдешь, скажи че нашел... А то в друг не то. :))
  • homm © (07.06.07 20:45) [12]
    А в объявлении, 2 ошибки в одной строчке? Или я второй не вижу?
  • @!!ex_ (07.06.07 20:48) [13]
    > [12] homm ©   (07.06.07 20:45)

    Те, которые в одной строчке я за одну посчитал. Благо смысл у них один.
  • Black-Death (07.06.07 21:15) [14]
    Все. Спасибо. Все исправил. Слишком простые ошибки)))) Я в начале думал, что сложнее
    1. В VAR массив был задан не так. поменял на -
    Towers:array[0..2,0..4] of integer;


    2. В VAR поменял тип C на String
    3. И
    DrawTower(0)

    поменял на
    DrawTower(3)

  • Black-Death (07.06.07 21:16) [15]
    точнее на DrawTower(2)
  • homm © (07.06.07 21:21) [16]
    Ну вот, не такой уж и бездарный индивид, как хотел себя показать в [0] :)
    Жаль, я думал будет повод поглумиться :)
  • Black-Death (07.06.07 21:27) [17]

    > homm ©   (07.06.07 21:21) [16]
    > Ну вот, не такой уж и бездарный индивид, как хотел себя
    > показать в [0] :)
    > Жаль, я думал будет повод поглумиться :)

    Просто просил помочь, так как с графикой редко работал и толком не знал как правильно ее приминить
  • @!!ex_ (07.06.07 21:31) [18]
    > 2. В VAR поменял тип C на String

    Гм. ЛОЛ честно говоря... Вообще то там Char должен быть. Клавиши не бывают стрингами.... :)))))))))

    Я не стал делать сложные ошибки. Смысл?

    А графики тут одна процедура. РИсующая башенки... И та юзает только прямоугольники. Инициализация из хелпа содрана.

    P.S>
    НЕнавижу IDE Паскаля...
  • Black-Death (07.06.07 21:32) [19]

    > Гм. ЛОЛ честно говоря... Вообще то там Char должен быть.
    >  Клавиши не бывают стрингами.... :)))))))))

    А что. Стринг тоже работает на ура :)
  • grisme © (08.06.07 19:49) [20]

    > @!!ex_   (07.06.07 21:31) [18]
    >
    > > 2. В VAR поменял тип C на String
    >
    > Гм. ЛОЛ честно говоря... Вообще то там Char должен быть.
    >  Клавиши не бывают стрингами.... :)))))))))


    ну ничего, товарищч в верную сторону думал :o)
  • @!!ex_ (08.06.07 22:36) [21]
    > ну ничего, товарищч в верную сторону думал :o)

    Так не честно! Ему компилятор подсказал! :))
    Явно видно что сам не понимает, что в коде происходит.
 
Конференция "Игры" » Помгите сделать простую игру на паскале. [Pascal, Windows]
Есть новые Нет новых   [119205   +10][b:0][p:0.004]