Umístnení souboru www.TrSek.com/cover/lizal_okurek/had.pas{ HAD.PAS Copyright (c) Miroslav Lízal, Tomáš Okurek }
{ Hra had v ktorej mate za ulohu zozbierat body na ploche. }
{ }
{ Datum:12.03.2003 http://www.trsek.com }
program had1;
uses crt,dos;
type had=array[byte]of integer;
con=array[byte]of real;
var n,bx,by,i,j,kla,zx,zy:integer;
hx,hy,phx,phy,p,pp:had;
conh:con;
conb:real;
od:char;
procedure SetCursor(s,e:Byte);
var regs: Registers;
begin
with regs do
begin
ah:=01;
cl:=e;
ch:=s
end;
Intr($10,regs)
end;
procedure CursorOff;
begin
SetCursor($20,$20)
end;
repeat
if (hx[1]=bx)and(hy[1]=by) then
begin
gotoxy(2,25);
write('Score: ',n);
bx:=random(37)+1;
by:=random(22)+1;
for i:=1 to n do conh[i]:=hx[i]+hy[i]/100;
conb:=bx+by/100;
j:=1;
repeat
if conb=conh[i] then
begin
bx:=random(37)+1;
by:=random(22)+1;
j:=1
end
else j:=j+1;
until j>n;
n:=n+1;
case p[n-1] of
75:begin
hx[n]:=hx[n-1]+1;
hy[n]:=hy[n-1];
p[n]:=75
end;
80:begin
hx[n]:=hx[n-1];
hy[n]:=hy[n-1]-1;
p[n]:=80
end;
72:begin
hx[n]:=hx[n-1];
hy[n]:=hy[n-1]+1;
p[n]:=72
end;
77:begin
hx[n]:=hx[n-1]-1;
hy[n]:=hy[n-1];
p[n]:=77
end
end;
gotoxy(bx,by);
write(#254)
end;
gotoxy(bx,by);
write(#254);
if keypressed then
begin
kla:=ord(readkey);
if kla=0 then kla:=ord(readkey)
end;
if (((kla=80)and(p[1]=72))or((kla=72)and(p[1]=80))or((kla=75)and(p[1]=77))or((kla=77)and(p[1]=75))) then
begin
for i:=1 to n do case p[i] of
80:p[i]:=72;
72:p[i]:=80;
75:p[i]:=77;
77:p[i]:=75
end;
kla:=p[n];
for i:=n downto 1 do
begin
pp[i]:=p[n-i+1];
phx[i]:=hx[n-i+1];
phy[i]:=hy[n-i+1]
end;
hx:=phx;
hy:=phy;
p:=pp;
for i:=1 to n-1 do p[i]:=p[i+1]
end;
for i:=n downto 1 do if i>1 then p[i]:=p[i-1]
else case kla of
72,80,75,77:p[1]:=kla
end;
zx:=hx[n];
zy:=hy[n];
for i:=1 to n do case p[i] of
80:hy[i]:=hy[i]+1;
72:hy[i]:=hy[i]-1;
77:hx[i]:=hx[i]+1;
75:hx[i]:=hx[i]-1
end;
for i:=1 to n do if hx[i]>38 then hx[i]:=1
else if hx[i]<1 then hx[i]:=38
else if hy[i]>23 then hy[i]:=1
else if hy[i]<1 then hy[i]:=23;
for i:=1 to n do
begin
gotoxy(hx[i],hy[i]);
write(chr(219))
end;
gotoxy(zx,zy);
write(' ');
for i:=2 to n do
if (hx[1]=hx[i])and(hy[1]=hy[i]) then
begin
clrscr;
textmode(CO40);
gotoxy(9,13);
write('Kousl ses!');
kla:=0;
delay(3000)
end;
case n of
1..10:delay(50);
11..20:delay(40);
21..30:delay(30)
else delay(20)
end