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