Michael,
versuche mal folgendes
in TForm1.Button1Click
ersetze
while (Dest.X - 1 <> Start.X) or (Dest.Y - 1 <> Start.Y) do
durch
while (abs(dest.x-start.x)>1) or (abs(dest.y-start.y)>1) do
in FindPath
ersetze
Delphi-Quellcode:
if Dest.X > Start.X then
List.H := (Dest.X - i) * 10
else
List.H := (i - Dest.X) * 10;
// Diagonale Felder
if ((Start.X - 1 = i) and (Start.Y - 1 = j)) // oben links
or ((Start.X - 1 = i) and (Start.Y + 1 = j)) // unten links
or ((Start.X + 1 = i) and (Start.Y - 1 = j)) // oben rechts
or ((Start.X + 1 = i) and (Start.Y + 1 = J)) then // unten rechts
List.G := 14
else
// alle anderen
List.G := 10;
List.F := List.G + List.H;
durch
Delphi-Quellcode:
dx:=abs(dest.x-i);
dy:=abs(dest.y-j);
list.f:=dx*dx+dy*dy;
dx und dy mußt Du natürlich lokal deklarieren.
keine Garantie, aber bei mir funktioniert das.
Gruß, Klaus