program kocek;
uses crt, graph;
var ster,tryb,x,y,i,j, plansza: integer;
    klawisz: char;
    t: array[0..63,0..47] of byte;  {matryca ruchu}
    const maxx=63;
          maxy=47;

Label koniec, wybor;

procedure init;
begin
ster:=detect;
initgraph(ster,tryb,'c:\tp\bgi');
end;
procedure zerowanie;
begin
for i:=0 to maxx do
for j:=0 to maxy do
t[i,j]:=0;
end;

Procedure Gratulacje;
Begin
closegraph;
initgraph(ster,tryb,'c:\tp\bgi');
SetTextstyle(1,0,15);
OutTextXY(10,10,'Gratulacje');
end;

function jopek(x,y:integer):integer;
begin
     x:=x*10;
     y:=y*10;
     setfillstyle(1,15);
     bar(x,y,x+9,y+9);
{     setfillstyle(1,12);
     bar(x+10,y+10,x+30,y+30);}
end;

function zamjop(x,y:integer):integer;
begin
     x:=x*10;
     y:=y*10;
     setfillstyle(1,0);
     bar(x,y,x+9,y+9);
{     setfillstyle(1,0);
     bar(x+10,y+10,x+30,y+30);}
end;

function przeszkoda(a,b,c,d:integer):integer;
var i,j: integer;
begin
     setfillstyle(1,green);
     bar(a*10,b*10,c*10-1,d*10-1);
     for i:=a to c-1 do
     for j:=b to d-1 do
     t[i,j]:=1;
end;

function nagroda(a,b,c,d:integer):integer;
var i,j: integer;
begin
     setfillstyle(1,yellow);
     bar(a*10,b*10,c*10-1,d*10-1);
     for i:=a to c-1 do
     for j:=b to d-1 do
     t[i,j]:=0;
end;

Procedure plansza1;
begin
przeszkoda(0,2,5,3);
przeszkoda(7,2,62,3);
przeszkoda(0,2,1,44);
przeszkoda(0,43,50,44);
przeszkoda(52,43,61,44);
przeszkoda(61,2,62,44);
przeszkoda(0,20,15,21);
przeszkoda(17,20,31,21);
przeszkoda(31,35,46,36);
przeszkoda(48,35,61,36);
przeszkoda(31,2,32,25);
przeszkoda(31,27,32,44);

nagroda(6,15,7,16);
nagroda(25,5,26,6);
nagroda(6,25,7,26);
nagroda(22,39,23,40);
nagroda(55,5,56,6);
nagroda(55,30,56,31);
nagroda(40,16,41,17);
nagroda(40,39,41,40);
end;

Procedure plansza2;
begin
przeszkoda(0,2,5,3);
przeszkoda(7,2,62,3);
przeszkoda(0,2,1,44);
przeszkoda(0,43,50,44);
przeszkoda(52,43,61,44);
przeszkoda(61,2,62,44);
przeszkoda(0,20,15,21);
{przeszkoda(17,20,31,21);
przeszkoda(31,35,46,36);
przeszkoda(48,35,61,36);
przeszkoda(31,2,32,25);
przeszkoda(31,27,32,44);
}

nagroda(6,15,7,16);
nagroda(25,5,26,6);
nagroda(6,25,7,26);
nagroda(22,39,23,40);
nagroda(55,5,56,6);
nagroda(55,30,56,31);
nagroda(40,16,41,17);
nagroda(40,39,41,40);
end;

Procedure plansza3;
begin
{przeszkoda(0,2,5,3);
przeszkoda(7,2,62,3);
przeszkoda(0,2,1,44);
przeszkoda(0,43,50,44);
przeszkoda(52,43,61,44);
przeszkoda(61,2,62,44);
przeszkoda(0,20,15,21);}
przeszkoda(17,20,31,21);
przeszkoda(31,35,46,36);
przeszkoda(48,35,61,36);
przeszkoda(31,2,32,25);
przeszkoda(31,27,32,44);


nagroda(6,15,7,16);
nagroda(25,5,26,6);
nagroda(6,25,7,26);
nagroda(22,39,23,40);
nagroda(55,5,56,6);
nagroda(55,30,56,31);
nagroda(40,16,41,17);
nagroda(40,39,41,40);
end;




Begin
wybor:
zerowanie;
init;
{Matryca ruchu: x (0 do 63), y (0 do 47)}



if plansza=0 then begin x:=0; y:=0; plansza1; end;
if plansza=1 then begin x:=2; y:=10; plansza2; end;
if plansza=2 then begin x:=12; y:=20; plansza3; end;
if plansza=3 then gratulacje;
jopek(x,y);

repeat
  klawisz:=readkey;
{}      if (klawisz='6') and (t[x+1,y]=0) then
      begin
           zamjop(x,y);
           x:=x+1;
           if x=maxx then x:=0;
      end;
      if (klawisz='6') and (t[x+1,y]=1) then
      begin sound(200); delay(100); nosound; end;
{}      if (klawisz='4') and (t[x-1,y]=0) then
      begin
           zamjop(x,y);
           x:=x-1;
           if x=-1 then x:=maxx-1;
      end;
      if (klawisz='4') and (t[x-1,y]=1) then
      begin sound(200); delay(100); nosound; end;
{}      if (klawisz='8') and (t[x,y-1]=0) then
      begin
           zamjop(x,y);
           y:=y-1;
           if y=-1 then y:=maxy-1;
      end;
      if (klawisz='8') and (t[x,y-1]=1) then
      begin sound(200); delay(100); nosound; end;
{}      if (klawisz='2') and (t[x,y+1]=0) then
      begin
           zamjop(x,y);
           y:=y+1;
           if y=maxy then y:=0;
      end;
      if (klawisz='2') and (t[x,y+1]=1) then
      begin sound(200); delay(100); nosound; end;

if klawisz='q' then exit;
if y=44 then begin
            plansza := plansza+1;
            goto wybor;
            end;
jopek(x,y);
until klawisz='q';

{koniec: gratulacje;
readln;}
END.