Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Pathfinding mit A*

  Alt 18. Dez 2005, 00:43
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
  Mit Zitat antworten Zitat