if keypressed then {ak bolo niečo stlačemé}
Begin
z:=readkey; {načítam ten znak}
if z=#0 then {ak je to nulový znak}
Begin
z:=readkey; {po nulovom znaku predpokladám druhý znak}
case z of
#72: writeln('stlacil si hore');
#75: writeln('stlacil si vlavo');
#77: writeln('stlacil si vpravo');
#80: writeln('stlacil si dole');
end;
End;
End;
Var x,y:integer;
z:char;
Begin
x:=40; y:=10; {pociatocne suradnice}
gotoxy(x,y);write('*');
repeat
if keypressed then {ak bolo niečo stlačemé}
Begin
z:=readkey; {načítam ten znak}
if z=#0 then {ak je to nulový znak}
Begin
z:=readkey; {po nulovom znaku predpokladám druhý znak}
gotoxy(x,y);write(' ');
case z of
#72: if y>1 then dec(y);
#75: if x>1 then dec(x);
#77: if x<80 then inc(x);
#80: if y<24 then inc(y);
end;
gotoxy(x,y);write('*');
End;
until z=#27;
End.
Kto chce vidieť ukážku, tu sa dá stiahnuť
uses crt;
Var dx,dy,x,y:integer;
z:char;
Begin
x:=40; y:=10;
dx:=0; dy:=0;{pociatocne suradnice a zmeny}
gotoxy(x,y);write('*');
repeat
if keypressed then {ak bolo niečo stlačemé}
Begin
z:=readkey; {načítam ten znak}
if z=#0 then {ak je to nulový znak}
Begin
z:=readkey; {po nulovom znaku predpokladám druhý znak}
case z of
#72: begin dy:=-1;dx:= 0; end; {menit sa bude y o -1}
#75: begin dy:= 0;dx:=-1; end;
#77: begin dy:= 0;dx:=+1; end;
#80: begin dy:=+1;dx:= 0; end;
end;
End;
end;
gotoxy(x,y);write(' '); {tu znak zotriem}
x:=x+dx; y:=y+dy; {vypocitam nove suradnice}
if (x=0) or (x=81) or (y=0) or (y=25) then z:=#27 {ak vzbehne z obrazu - koniec}
else
begin
gotoxy(x,y);write('*'); {na nove miesto nakreslim}
delay(100); {aby aj ti pomalsi mali sancu}
end
until z=#27;
End.
Kto chce vidieť ukážku, tu sa dá stiahnuť
uses crt;
Var A:array[1..25,1..80,1..2] of char absolute $b800:0;
dx,dy,i,x,y:integer;
z,zz:char;
Begin
textcolor(0);
clrscr;
for i:=1 to 10 do
begin
x:=random(50+1); y:=random(15)+1;
window(x,y,x+1+random(80-x),y+1+random(25-y));
textbackground(random(14)+1);
clrscr;
end;
window(1,1,80,25);
for i:=1 to 80 do
begin
a[random(16)+5,random(70)+5,1]:=char(random(26)+65);
end;
x:=40; y:=10;
dx:=0; dy:=0;{pociatocne suradnice a zmeny}
zz:=a[y,x,1];
a[y,x,1]:='*'; {gotoxy(x,y);write('*'); }
repeat
if keypressed then {ak bolo niečo stlačemé}
Begin
z:=readkey; {načítam ten znak}
if z=#0 then {ak je to nulový znak}
Begin
z:=readkey; {po nulovom znaku predpokladám druhý znak}
case z of
#72: begin dy:=-1;dx:= 0; end; {menit sa bude y o -1}
#75: begin dy:= 0;dx:=-1; end;
#77: begin dy:= 0;dx:=+1; end;
#80: begin dy:=+1;dx:= 0; end;
end;
End;
End;
a[y,x,1]:=zz; {gotoxy(x,y);write(' '); tu znak zotriem}
x:=x+dx; y:=y+dy; {vypocitam nove suradnice}
if (x=0) or (x=81) or (y=0) or (y=25) then z:=#27 {ak vzbehne z obrazu
else
begin
zz:=a[y,x,1];
a[y,x,1]:='*'; {gotoxy(x,y);write('*'); na nove miesto nakreslim}
delay(100); {aby aj ti pomalsi mali sancu}
end;
until z=#27;
End.
Kto chce vidieť ukážku, tu sa dá stiahnuť
uses crt;
Var A:array[1..25,1..80,1..2] of char absolute $b800:0;
had: array[1..100, 1..2] of byte;
uroven,pz,x,y,dlzka,i,p1,p2: byte;
z:char;
cas:integer;
const prazdne=' ';
kvet1= #5;
kvet2=#6;
stena1=#185;
stena2=#205;
telo=#177;
hlava=#220;
Function pohyb(novex, novey: byte): Boolean;
var i: byte;
Begin
dec(cas);
case A[novey, novex, 1] of
prazdne: Begin
for i:=dlzka downto 1 do had[i+1]:=had[i]; {kazda bunka cervika ide dopredu}
a[had[1,2], had[1,1], 1] :=telo;
had[1,1]:=novex; had[1,2]:=novey; {este zapisem nove suradnice hlavy}
A[novey, novex, 1]:=hlava; {a nakreslim hlavu}
a[had[dlzka+1,2], had[dlzka+1,1], 1] :=prazdne; {zotriem odidenu posl bunku}
pohyb:=TRUE;
End;
kvet1,kvet2:Begin
inc(pz);
for i:=dlzka downto 1 do had[i+1]:=had[i]; {kazda bunka cervika ide dopredu}
a[had[1,2], had[1,1], 1] :=telo;
had[1,1]:=novex; had[1,2]:=novey; {este zapisem nove suradnice hlavy}
A[novey, novex, 1]:=hlava; {a nakreslim hlavu}
inc(dlzka); {zvacsim dlzku cerva}
pohyb:=TRUE;
End;
stena1,stena2, telo:Begin
a[had[1,2], had[1,1], 1] :=telo;
a[novey, novex, 1]:=hlava;
pohyb:=FALSE;
End;
end;
gotoxy(10,24); write('Pocet kvetov:',p1+p2, ' este zostava zjest:',p1+p2-pz:3,' este mas cas:', cas );
End;
Begin
pz:=0;uroven:=1;
p1:=10; p2:=10;cas:= 500;
{***********namalujem ihrisko***********}
textmode(co80);
textcolor(14);
textbackground(green);
clrscr;
gotoxy(10,24); write('Pocet kvetov:',p1+p2, ' este zostava zjest:',p1+p2-pz:3,' este mas cas:', cas );
dlzka:=10;
for i:=1 to dlzka do
begin
had[i,1]:=31-i; had[i,2]:=10;
a[10,31-i,1]:=telo;
end;
a[10,30,1]:=hlava;
{************zasadim kvietky***************}
i:=1;
repeat
x:=random(78)+1;
y:=random(20)+1;
if a[y,x,1]=' ' then
begin
gotoxy(x,y); write(kvet1);
inc(i);
end;
until i=11;
textcolor(red);i:=1;
repeat
x:=random(78)+1;
y:=random(20)+1;
if a[y,x,1]=' ' then
begin
gotoxy(x,y); write(kvet1);
inc(i);
end;
until i=11;
repeat
if keypressed then z:=readkey;
if z=#0 then z:=readkey;
case z of
#72: if not pohyb(had[1,1],had[1,2]-1) then z:=#27;
#75: if not pohyb(had[1,1]-1,had[1,2]) then z:=#27;
#77: if not pohyb(had[1,1]+1,had[1,2]) then z:=#27;
#80: if not pohyb(had[1,1],had[1,2]+1) then z:=#27;
end;
delay(100);
until (z=#27);
gotoxy(30,15);
if p1+p2>0 then write(' P R E H R A L S I')
ELSE WRITELN('G R A T U L U J E M');
READLN;
End.