program LABIRINT; uses graph,wincrt; var grdriver, grmode, errcode:integer; count:integer; key:char; p:pointer; Prize:integer; nx,ny,dx,dy,ik,jk,i,j:integer; const Left=#75; Up=#72; Down=#80; Right=#77; Esc=#27; Tab:array[1..10,1..10] of integer= ((0,0,0,0,4,0,0,0,0,0), (0,3,0,0,1,0,0,0,3,4), (0,1,0,1,1,0,3,1,1,0), (0,1,1,1,0,0,0,0,1,0), (0,0,0,3,0,0,0,1,1,0), (0,1,1,1,1,0,1,1,0,0), (0,3,0,0,1,3,1,0,0,0), (0,1,1,0,0,1,0,0,1,0), (0,0,1,1,0,1,1,3,1,0), (0,0,0,2,0,0,0,0,0,0)); Procedure PrCount(count:integer); Var st:string[3]; begin setcolor(14); STR(count,st); setfillstyle(1,0); bar(370,310,640,340); settextstyle(0,0,2); outtextxy(400,320,'Ваши очки-'+st); end; Procedure DrawCol; var size:integer; begin setcolor(Yellow); setfillstyle(1,Yellow); circle(round(dx/2),round(dy/2),round(dx/4)); floodfill(round(dx/2),round(dy/2),Yellow); size:=imagesize(0,0,dx,dy); getmem(p,size); getimage(0,0,dx,dy,p^); end; Procedure AnalyseKey(Var Key:char; Var i,j,ik,jk:integer); begin key:=readkey; if key=#0 then begin key:=readkey; case key of left:j:=jk-1; right:j:=jk+1; up:i:=ik-1; down:i:=ik+1; end; end; setcolor(0); settextstyle(0,0,3); outtextxy(450,200,'стена'); end; Procedure DrawLab(var ik,jk:integer); Var i,j:integer; x,y:integer; begin x:=nx+dx*10+5; y:=ny+dy*10+5; setfillstyle(1,Cyan); bar(nx-5,ny-5,x,y); for i:=1 to 10 do for j:=1 to 10 do begin x:=(j-1)*dx+nx; y:=(i-1)*dy+ny; case tab[i,j] of 0:begin setfillstyle(8,brown); bar(x,y,x+dx,y+dy); end; 1:begin setfillstyle(1,White); bar(x,y,x+dx,y+dy); end; 2:begin setfillstyle(i,White); bar(x,y,x+dx,y+dy); ik:=i; jk:=j; putimage(x,y,p^,xorput); end; 3:begin setfillstyle(1,LightGray); bar(x,y,x+dx,y+dy); Prize:=Prize+1; end; 4:begin setfillstyle(1,Yellow); bar(x,y,x+dx,y+dy); end; end; end; end; Procedure MoveLab(Var i,j,ik,jk:integer); Var x,y,xk,yk:integer; Begin if (i=ik) and(j=jk) then Exit; x:=(j-1)*dx+nx; y:=(i-1)*dy+ny; xk:=(jk-1)*dx+nx; yk:=(ik-1)*dy+ny; case tab[i,j] of 0:begin sound(500); delay(20); count:=count-2; PrCount(count); setcolor(12); settextstyle(0,0,3); outtextxy(450,200,'стена'); i:=ik; j:=jk; nosound; end; 1:begin putimage(x,y,p^,xorput); putimage(xk,yk,p^,xorput); tab[ik,jk]:=1; tab[i,j]:=2; ik:=i; jk:=j; end; 3:begin count:=count+10; PrCount(count); setfillstyle(1,White); bar(x,y,x+dx-1,y+dy-1); putimage(x,y,p^,xorput); putimage(xk,yk,p^,xorput); tab[ik,jk]:=1; tab[i,j]:=2; ik:=i; jk:=j; end; 4:begin putimage(x,y,p^,xorput); putimage(xk,yk,p^,xorput); setcolor(13); settextstyle(0,0,3); if count