program Pelda26;
uses crt;
var lab:array [1..10,1..10] of byte
= ((9,9,9,9,9,9,9,9,9,9),
(9,0,0,9,0,9,0,9,0,5),
(9,0,9,9,0,9,0,9,0,9),
(9,0,0,0,0,9,0,0,0,9),
(9,9,0,9,9,9,9,9,0,9),
(9,0,0,0,0,0,0,9,0,9),
(9,0,9,9,9,0,9,0,0,9),
(9,0,0,0,9,0,0,0,9,9),
(9,0,9,0,9,0,9,0,0,9),
(9,0,9,9,9,9,9,9,9,9));
procedure kiiras;
var i,j:integer;
begin
for i:=1 to 10 do
begin
for j:=1 to 10 do
case lab[i,j] of
9: begin {fal}
textcolor(lightgray);
write(#219); { #219 = befestett
negyzet karakter }
end;
0,5: write(' '); { ures vagy celpont }
1: begin { helyes utvonal }
textcolor(lightgreen);
write('X');
end;
2: begin { bejart, de rossz utvonal }
textcolor(red);
write('O');
end;
end;
writeln;
end;
writeln;
end;
procedure lepes(x,y:integer);
begin
{ nem ertunk be a celba? }
if lab[x,y]<>5 then
begin
{ lepes elore... }
lab[x,y]:=1;
{ van felfele bejaratlan utvonal (ures vagy celpont)? }
if (x>1) and (lab[x-1,y] in [0,5]) then lepes(x-1,y);
{ van jobbra bejaratlan utvonal (ures vagy celpont)? }
if (y<10) and (lab[x,y+1] in [0,5]) then lepes(x,y+1);
{ van balra bejaratlan utvonal (ures vagy celpont)? }
if (y>1) and (lab[x,y-1] in [0,5]) then lepes(x,y-1);
{ van lefele bejaratlan utvonal (ures vagy celpont)? }
if (x<10) and (lab[x+1,y] in [0,5]) then lepes(x+1,y);
{ lepes vissza...
megjeloles bejart, de rossz utvonalnak }
lab[x,y]:=2;
end
else
begin
{ celba ertunk, utolso lepes elore... }
lab[x,y]:=1;
{ megtalalt utvonal kirajzolasa }
kiiras;
{ utolso lepes vissza }
lab[x,y]:=2;
end;
end;
begin
clrscr;
{ ures labirintus kirajzolasa }
kiiras;
{ megoldas keresese,
elso lepes: [10,2] }
lepes(10,2);
{ magyarazat kiirasa }
textcolor(lightgray);
writeln(#219,' ... fal');
textcolor(red);
write('O');
textcolor(lightgray);
writeln(' ... bejart, de rossz utvonal');
textcolor(lightgreen);
write('X');
textcolor(lightgray);
write(' ... helyes utvonal');
{ varakozas egy billentyu megnyomasara }
readkey;
end.
Comments
0 B
|👍
/👎
0 B
|0 👍
/0 👎
0 B
|👍
/👎