Habe ich auch schon versucht, das klappt auch nicht. Im obigen Code war ein Fehler. So stimmt es:
Delphi-Quellcode:
if Dest.X > i then
begin
dx := Dest.X - i;
end
else if Dest.X < i then
begin
dx := i - Dest.X;
end
else
dx := Dest.X;
if Dest.y > j then
begin
dy := Dest.y - j;
end
else if Dest.Y < j then
begin
dy := j - Dest.y;
end
else
dy := Dest.Y;
List.H := (dx + dy) * 10;
Jetzt kommt er bis zum Ziel, aber nur bis ein Kästchen vor das Ziel, so dass er aus der Schleife nicht rauskommt:
Delphi-Quellcode:
while (Dest.X <> Start.X)
or (Dest.Y <> Start.Y)
do
begin
Application.ProcessMessages;
Start := FindPath(Maze, Start, Dest);
SetLength(Path, length(Path) + 1);
Path[length(Path) - 1] := Start;
SetLength(OpenList, 0);
Sleep(250);
DrawSquare(2, 3, SPACING, clGreen);
InvalidateRect(
Handle,
nil, True);
end;