Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Не компилиться код игры


Автор: Cupac 11.11.2007, 12:40
Нашёл интересный код хороший игры вот только он не компилиться. 
Помогите запустить её.. 

Автор: volvo877 11.11.2007, 12:52
Цитата(Cupac @  11.11.2007,  11:40 Найти цитируемый пост)
вот только он не компилиться. 

Вот как раз Турбо Паскалем все прекрасно компилится. А если ты пользуешься FPC (судя по одному из твоих предыдущих вопросов), то проблемы вот где:

1.
Код

          for time_to_black:=6300 downto 1 do
          begin
               time_to_black:=time_to_black-1; { <--- Вот это компилятор ни за что не пропустит... }
               delay (1);
               sound (time_to_black+100);
          end;

... потому как внутри цикла For нельзя менять переменную - счетчик цикла. Или вообще убери отмеченную строку (переменная time_to_black сама будет меняться), либо замени этот For на While (или Repeat)

2. 
Код

var
   flag:boolean; 
   gd,gm: smallint; { <--- измени тип с Integer на вот этот }


Так программа компилируется, пробуй запускать. smile

Автор: Cupac 11.11.2007, 23:00
Когда начинаешь играть, при удачном откусывание участка вылетает с ошибкой “Error 202: Stack overflow error”
На строчке 125..

P.S Как Turbo Pascal заставать создавать exe файл?

Автор: orthrus 12.11.2007, 07:26
В Turbo Pascal делается в меню Compile->Destination->Disk

Автор: Cupac 16.11.2007, 20:40
Так не подскажите, в чём проблемка-с?

"Когда начинаешь играть, при удачном откусывание участка вылетает с ошибкой “Error 202: Stack overflow error”
На строчке 125.."

Автор: volvo877 16.11.2007, 21:27
Cupac,

Во-первых, заходишь Options -> Memory Sizes и Stack Size меняешь с 16384 (по умолчанию) на 64000... А во-вторых, чтоб потом не было Range Check Error - переписываешь процедуру CheckFill хотя бы вот так:

Код

procedure check_fill (x,y,n:integer);
begin
     board[x,y]:=9;
     if n<3000 then { <--- Непонятно, откуда взялось 3000 }
     begin
          if (x < 161) and (board[x+1,y] mod 2 = 0) then check_fill (x+1,y,n+1);
          if (x > 0) and (board[x-1,y] mod 2 = 0) then check_fill (x-1,y,n+1);
          if (y < 111) and (board[x,y+1] mod 2 = 0) then check_fill (x,y+1,n+1);
          if (y > 0) and (board[x,y-1] mod 2 = 0) then check_fill (x,y-1,n+1);
     end else
     board[x,y]:=8;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)