AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mal wieder AStar - und seine Tücken

Ein Thema von Edlmann · begonnen am 11. Jan 2011 · letzter Beitrag vom 12. Jan 2011
Antwort Antwort
Benutzerbild von Deep-Sea
Deep-Sea

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

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
Edlmann

Registriert seit: 19. Nov 2010
212 Beiträge
 
#2

AW: Mal wieder AStar - und seine Tücken

  Alt 12. Jan 2011, 09:45
Mmh...werd ich mir mal anschauen, allerdings erklärt keiner dieser Fehler, warum sich das Programm hin und wieder komplett verabschiedet und
den Rechner mit ins Nirvana nimmt...hatte es jetzt schon zwei mal, dass sich mein kompletter Rechner bei der Pfadfindung aufgehangen hat, und zwar so weit,
dass nichtmal mehr windows task-manager zu erreichen war...Warum X manchmal so hohe Werte enthält werde ich mir mal anschauen, vielen Dank schonmal...
und dass mit der Rechteckgröße...*Autsch* hätt mal nicht nur in der Gegner Unit nach dem Fehler suchen sollen ^^

[Edit]
Okey, die falsche Konstante war Schuld an der chaotischen Bewegung des Gegners.

Und die Pfadfindung führte manchmal zur Zugriffsverletzung, weil an einer Stelle noch alte Konstanten (die ich zur Entwicklung des AStar-Algorythmus benutzt habe)
übergeblieben waren und nicht durch die Gegner-spezifischen Variablen ersetzt waren...

Und das X so extrem hohe Werte enthält, lag daran, dass ich die beiden Variablen lowx und lowy nicht initialisiert habe...
Okey, nächstmal 15 mal, nicht nur 5mal durch den Quelltext schauen und Fehler suchen...und überall suchen ^^
danke für den Denkanstoß Deep-Sea
[/Edit]

Geändert von Edlmann (12. Jan 2011 um 10:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

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

AW: Mal wieder AStar - und seine Tücken

  Alt 12. Jan 2011, 09:51
Wenn der Arbeitsspeicher voll ist, dann erklärt das evtl. schon, warum dein ganzes System nicht mehr so mag wie du es gerne hättest
Tipp: Deklariere nur EINE Konstante und nicht zwei dafür (oder mach die Zuweisung wenigstens so: "Konstante2 = Konstante1").

(Des weiteren gehen die Tipps was das Entwickeln von Spielen angeht hier meistens dazu zu raten, die Logik (in deinem Fall also wohl die Unit Zombie) von der Grafikausgabe zu trennen. Aber das ist ggf. ein anderes Thema.)
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#4

AW: Mal wieder AStar - und seine Tücken

  Alt 12. Jan 2011, 10:02
Des weiteren gehen die Tipps was das Entwickeln von Spielen angeht hier meistens dazu zu raten, die Logik (in deinem Fall also wohl die Unit Zombie) von der Grafikausgabe zu trennen.
Was ja nicht nur für Spiele gilt
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Edlmann

Registriert seit: 19. Nov 2010
212 Beiträge
 
#5

AW: Mal wieder AStar - und seine Tücken

  Alt 12. Jan 2011, 16:16
Das ist im aktuellem Spiel getrennt, die Logik läuft über einen Timer, die Ausgaben über die Funktion Application.OnIdle
und ich habe die zweite Konstante gelöscht, war auch eigentlich nicht geplant da zwei raus zu machen...sinds aber iwie geworden ^^

Danke nochmal,
Edlmann
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz