Hab ja geschrieben, dass ich später den kürzesten Weg finden will. Habs nun anders gemacht. Pathfinding bzw A* algo heisst das Zauberwort. Zwar hab ich das überhaupt nicht verstanden und auch viele Hilfsmittel haben mir nichts gebracht, aber folgendes Bild hilft doch sehr.
Bild
Wenn das Bild dann so "aussieht", dann is eigentlich schon alles geschafft. Der Spieler muss nur noch schauen, wo nebenan die kleinste Zahl ist und diese nehmen.
Delphi-Quellcode:
weg:=-1;
for k:=0 to 85 do begin //So hoch, kann die höchste Entfernung sein
gehen:=true;
weg:=weg+1;
for i:=0 to 15 do //Laenge
for j:=0 to 13 do begin //Breite
if Laby[i,j]=weg then
if gehen then begin
if Laby[i+1,j]>=weg then Laby[i+1,j]:=weg+1; //Alle angrenzenden
if Laby[i-1,j]>=weg then Laby[i-1,j]:=weg+1; //Felder werden um
if Laby[i,j+1]>=weg then Laby[i,j+1]:=weg+1; //1 erhöht, solange
if Laby[i,j-1]>=weg then Laby[i,j-1]:=weg+1; //sie noch keine Zahl haben
end;
end;
end;
Lösung besteht aus 3 for-schleifen, die je nach Grösse des Labyrinths variiren