program labirintus; uses crt; const n=10; m=10; irany:array[1..5,1..2] of integer=((0,1),(1,0),(0,-1),(-1,0),(0,0)); 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:array[1..2] of integer; {honnan indul az eger} helye:array[0..n*m,1..2] of integer; {melyik koord. pontban tartozkodik} sajt:array[1..2] of integer; {hol van a sajt} c:char; i,j:integer; 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[1]:=i; {a program nem ellenorzi, hogy van-e tobb sajt} sajt[2]:=j; end; if labirint[i,j]='' then begin start[1]:=i; {eger start pontja} start[2]:=j; end; end; end; for i:=0 to n*m do {lepessorozat kinullazasa} begin helye[i,1]:=0; helye[i,2]:=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; function vanjoeset(i:integer;var j:integer):boolean; function rosszeset(i,j:integer):boolean; var k:integer; function nemegy(i,k:integer):boolean; {koordinatak egyenlosege} begin nemegy:=true; if (helye[k,1]=helye[i-1,1]+irany[j,1]) and (helye[k,2]=helye[i-1,2]+irany[j,2]) then nemegy:=false; end; {nemegy vege} begin k:=0; while (k=1) and (Labirint[helye[i-1,1],helye[i-1,2]]<>'*') do begin if vanjoeset(i,j) then begin iranya[i]:=j; helye[i,1]:=helye[i-1,1]+irany[j,1]; helye[i,2]:=helye[i-1,2]+irany[j,2]; gotoxy(35+helye[i-1,2],7+helye[i-1,1]); {eger kirajzolasa} write(' '); gotoxy(35+helye[i,2],7+helye[i,1]); write(''); i:=i+1; end else begin iranya[i]:=0; helye[i,1]:=0; helye[i,2]:=0; i:=i-1; gotoxy(35+helye[i,2],7+helye[i,1]); {eger kirajzolasa} write(' '); gotoxy(35+helye[i-1,2],7+helye[i-1,1]); write(''); end; c:=readkey; end; c:=readkey; end.