program labirintus; uses crt,graph; const n=10; m=10; irany:array[1..5] of Pointtype= ((x:0;y:1),(x:1;y:0),(x:0;y:-1),(x:-1;y:0),(x:0;y:0)); fal='˛'; var labirint:array[0..n+1,0..m+1] of char; {A labirintus felepitese} iranya:array[0..n*m] of integer; {milyen iranyokba kell lepni egymas utan} start:PointType; {honnan indul az eger} helye:array[0..n*m] of PointType; {melyik koord. pontban tartozkodik} sajt:PointType; {hol van a sajt} c:char; i,j,x,y:integer; melyik:byte; van:boolean; procedure feltolt; {labirintus megadasa} const lab:array[1..n] of string=('˛˛˛˛˛˛˛˛˛˛', '˛ ˛ ˛', '˛ ˛ ˛ ˛˛', '˛˛ ˛˛˛˛ *˛', '˛ ˛ ˛', '˛˛ ˛˛˛˛˛˛˛', '˛ ˛ ˛', '˛ ˛˛ ˛˛˛ ˛', '˛ ˛  ˛', '˛˛˛˛˛˛˛˛˛˛' ); var i,j:integer; l:string; begin for i:=1 to n do begin l:=lab[i]; for j:=1 to m do begin labirint[i,j]:=l[j]; if labirint[i,j]='*'then begin sajt.x:=i; {a program nem ellenorzi, hogy van-e tobb sajt} sajt.y:=j; end; if labirint[i,j]='' then begin start.x:=i; {eger start pontja} start.y:=j; end; end; end; for i:=0 to n*m do {lepessorozat kinullazasa} begin helye[i].x:=0; helye[i].y:=0; iranya[i]:=0; end; for i:=1 to n do for j:=1 to m do begin gotoxy(35+j,7+i); write(labirint[i,j]) end; end; Procedure vanjoeset(i:integer;var j:integer); function rosszeset(i,j:integer):boolean; {Itt kezdodik a vanjo deklaracios resze} var k:integer; function nemegy(i,k:integer):boolean; {koordinatak egyenlosege} begin nemegy:=true; if (helye[k].x=helye[i-1].x+irany[j].x) and (helye[k].y=helye[i-1].y+irany[j].y) then nemegy:=false; end; {nemegy vege} begin While (j<1) and (helye[j].x=helye[i-1].x+irany[melyik].x) and (helye[j].y=helye[i-1].y+irany[melyik].y) do j:=j+1; Rosszeset:=(j=1) and ((helye[i].x<>sajt.x) or (helye[i].y<>sajt.y)) do begin vanjoeset(i,j); if van then begin x[i]:=melyik; helye[i].x=helye[i-1].x+irany[melyik].x; helye[i].y=helye[i-1].y+irany[melyik].y; i:=i+1; else ... else iranya[i]:=0; begin iranya[i]:=melyik gotoxy(35+helye[i-1].y,7+helye[i-1].x); write(' '); {eger kirajzolasa az i.helyen} gotoxy(35+helye[i].y,7+helye[i].x); write(''); i:=i+1; end; i:=i-1; end; c:=readkey; end.