Einzelnen Beitrag anzeigen

Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Mal wieder AStar - und seine Tücken

  Alt 12. Jan 2011, 08:57
Also zuerst einmal hast du ein Speicherleck in der Funktion DrawMap. Du erzeugst ständig eine TBitmap aber gibst sie nie wieder frei. Ändere das also schon mal so ab:
Delphi-Quellcode:
begin
  Bild := TBitmap.Create;
  try
    // Mach was mit "Bild".
  finally
    Bild.Free;
  end;
end;

[Edit1]
Zum Fehlerhaften bewegen:
In Unit1 hast du angegeben, dass die Feldgröße 40 Pixel beträgt, in der Unit Zombie aber nur 25. Das wird dann natürlich nix, wenn du eine Konstante zwei mal an Unterschiedlichen stellen deklarierst und ihr verschiedene Werte zu weißt.


[Edit2]
Zur AV:
In der Funktion FindPath steht ja folgendes:
Delphi-Quellcode:
   repeat
    SetLength(Path, n+1);
    Path[n].X := FindLowest(x, y).X;
    Path[n].Y := FindLowest(x, y).Y;
    x := Path[n].X;
    y := Path[n].Y;
    inc(n);
   //ShowMessage(IntToStr(X) + ' : ' + IntToSTr(Y) + ' : ' + IntToSTr(n));
   until (Map_Astar[x, y] = 1) or (n >= 100);
Die Variable x enthält des öfteren extrem hohe Werte, so das du versuchst auf ein Element im Array Map_Astar zuzugreifen, was nicht existiert. Warum genau x solche Werte enthält? Da bin ich jetzt zu faul zum suchen für *gg*


Alles in allem aber nichts, was man nicht in kurzer Zeit mit wenig Auffand hätte selbst finden können
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.

Geändert von Deep-Sea (12. Jan 2011 um 09:18 Uhr)
  Mit Zitat antworten Zitat