program hzds; uses crt; var i, j, l, nah, k : byte; osem : array [1..8] of byte; pole : array [1..7, 1..7] of char; nototo : boolean; z : char; const okraj = 3; procedure zaciatok; begin k:=1; randomize; pole[2,2]:=' '; for i:=1 to 7 do begin for j:=1 to 7 do begin if ((i mod 2) OR (j mod 2))=0 then begin if (((NOT(i=2)) OR (NOT(j=2)))) then begin repeat nototo:=false; nah:=trunc(random(8))+1; osem[k]:=nah; if k>1 then begin for l:=1 to k-1 do begin if osem[k]=osem[l] then nototo:=true; end; end; until nototo=false; k:=k+1; textcolor(green); gotoXY (i, j); write (nah); pole[i, j]:=chr(nah); normvideo; end end else begin gotoXY (i, j); write (chr(okraj)); end; end; end; gotoXY (2,2); textcolor(green); end; procedure test; begin k:=1; osem[k]:=ord(pole[2, 2]); nototo:=false; for j:=1 to 7 do begin for i:=1 to 7 do begin if ((i mod 2) OR (j mod 2))=0 then begin if (((NOT(i=2)) OR (NOT(j=2)))) then begin k:=k+1; osem[k]:=ord(pole[i, j]); begin if osem[k]>osem[k-1] then nototo:=true else begin nototo:=false; exit; end; end; end; end; end; end; end; procedure kde; begin for j:=1 to 7 do begin for i:=1 to 7 do begin if ((i mod 2) AND (j mod 2))=0 then begin if pole[i, j]=' ' then exit; end; end; end; end; procedure hore(x, y:byte); begin if ((y+2)>7) then exit; gotoXY (x, y+2); pole[i, j]:=pole[x, y+2]; pole[x, y+2]:=' '; write (' '); gotoXY (i, j); write (ord(pole[i,j])); gotoXY (x, y+2); end; procedure dole(x, y:byte); begin if (y-2)<1 then exit; gotoXY (x, y-2); pole[i, j]:=pole[x, y-2]; pole[x, y-2]:=' '; write (' '); gotoXY (i, j); write (ord(pole[i,j])); gotoXY (x, y-2); end; procedure vlavo(x, y:byte); begin if ((x+2)>7) then exit; gotoXY (x+2, y); pole[i, j]:=pole[x+2, y]; pole[x+2, y]:=' '; write (' '); gotoXY (i, j); write (ord(pole[i,j])); gotoXY (x+2, y); end; procedure vpravo(x, y:byte); begin if (x-2)<1 then exit; gotoXY (x-2, y); pole[i, j]:=pole[x-2, y]; pole[x-2, y]:=' '; write (' '); gotoXY (i, j); write (ord(pole[i,j])); gotoXY (x-2, y); end; procedure stlac; begin repeat z:=readkey; until ((ord(z)=27) or { koniec } (ord(z)=72) or { hore } (ord(z)=80) or { dole } (ord(z)=75) or { vlavo } (ord(z)=77)); { vpravo } case ord(z) of 27: halt(1); 72: begin kde; hore(i, j); end; 80: begin kde; dole(i, j); end; 75: begin kde; vlavo(i, j); end; 77: begin kde; vpravo(i, j); end; end; end; procedure kecy; begin gotoXY (20, 1); textcolor (Red); write ('H***** Z* D*********** S********'); normvideo; gotoXY (20, 3); write ('Tento hnusny napis zmizne az ked'); gotoXY (20, 4); write ('usporiadas cisla v hzds tabulke!'); gotoXY (25, 6); textcolor (DarkGray); write ('KarHnu - Karolkova HNU'); normvideo; end; procedure granulacia; begin gotoXY (20, 1); write ('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'); normvideo; gotoXY (20, 3); write ('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'); gotoXY (20, 4); write ('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'); gotoXY (32, 6); normvideo; end; begin clrscr; kecy; zaciatok; repeat stlac; test; until nototo=true; normvideo; granulacia; end.