MaxDlzkaHada=30; (* dlzka hada pri ktorej hra definitivne konci - vyhrou *)
PocetKociek=7; (* kolko kociek treba zobrat pri prvej hre *)
X1=1; X2=60; (* okraje hracej plochy *)
Y1=1; Y2=25;
NovyZivot=1000; (* Kolko bodov treba nazbierat aby sa pridal 1 zivot navyse *)
oneskorenie:byte=100;
KoniecProgramu:boolean=false;
zvuky:boolean=true;
TYPE THad=array[1..MaxDlzkaHada]of TInt2D;
VAR i,StarySmer,level,BodyPreNovyZivot:integer;
smer,DlzkaHada,life:byte;
g:char;
prehra,KoniecHry,KoniecKola:boolean;
score,HighScore:integer;
f:file;
had:THad;
Bod:TInt2D;
{$I Data.pas}
BEGIN
randomize;
DelicKmitoctu;
if ParamStr(1)='0' then zvuky:=false; (* druhy parameter zapina/vypina zvuky *)
assign(f,'score.dat'); (* nacita hi-score z externeho suboru *)
{$I-} reset(f); {$I+}
if IOResult<>0
then HighScore:=0 (* subor neexistuje/dajaka chyba *)
else begin (* vsjo jasno *)
BlockRead(f,HighScore,1);
close(f);
end;
repeat
UvodnaObrazovka;
level:=1;
life:=3;
score:=0;
BodyPreNovyZivot:=0;
DlzkaHada:=3;
kraj;
KoniecHry:=false; (* spustenie novej hry *)
while (not KoniecProgramu) and (not KoniecHry) do begin
smer:=2; (* zaciatocny smer pohybu *)
i:=0;
repeat (* zaciatocne suradnice hada *)
had[DlzkaHada-i].x:=30-i;
had[DlzkaHada-i].y:=12;
i:=i+1;
until i=DlzkaHada;
kraj;
NovyBod;
g:=#0;
DlzkaHada:=3; (* zaciatocna dlzka hada *)
KoniecKola:=false;
prehra:=false;
repeat
NoveKolo;
until KoniecHry or KoniecKola or KoniecProgramu;
end;
until KoniecProgramu;
ReWrite(f); (* zapise novu hodnotu hi-score do externeho suboru *)
BlockWrite(f,HighScore,1);
Close(f);
END.