![]() |
DelphiX + Backtracking (Wegfindung)
Liste der Anhänge anzeigen (Anzahl: 1)
Das Backtracking-Bsp ohne DelphiX versteh ich ja. Wie alles funktionier, etc. Hab das aber nun versucht in DelphiX einzubauen und es geht, aber nicht immer und machmal hängt sich das Programm auf. Manchmal geht er irgenwie, wie man eigentlich nicht gehen kann, etc.
Hab die File mal hier rangehent und denn Quellcode tu ich auch hier dazu (halt nur das wichtigste):
Delphi-Quellcode:
Das wärs. Was ist daran falsch bzw noch nicht ganz korekt?? :gruebel:
procedure Markieren(Code,i,k:Integer);
begin Player.X:=i*32; Player.Y:=k*32; Laby[i,k]:=Code; with THind.Create(Form1.DXSpriteEngine1.Engine) do begin Image:=Form1.DXImageList1.Items[1]; x:=i*32; y:=k*32; end; end; procedure Weg_Suchen(i,k: Integer); begin case Laby[i,k] of Spur: begin end; Wand: begin end; Aus: begin Markieren(Aus,i,k); AusFlag:=true; end; Frei: begin if AusFlag then Exit; Laby[i,k]:=Spur; Markieren(Spur,i,k); if i+1<=15 then Weg_Suchen(i+1,k); if k+1<=13 then Weg_Suchen(i,k+1); if i-1>=0 then Weg_Suchen(i-1,k); if k-1>=0 then Weg_Suchen(i,k-1); If Not AusFlag then begin Laby[i,k]:=Frei; Markieren(Frei,i,k); end; end; end; end; |
Re: DelphiX + Backtracking (Wegfindung)
Also bei mir hängt sich das Programm nicht auf,
und wenn er keinen Weg findet, gibt es auch keinen.:wink: -NIP- |
Re: DelphiX + Backtracking (Wegfindung)
Dann probier einmal folgendes (Weiss natürlich die Probleme besser, da ich das Programm schon 100000-male gestartet habe):
Das Ziel (blau) bekommt zB. (X/0)-> Also irgendeine X-Position, die Y soll aber 0 sein, also ganz oben. Nach ein paar versuchen wirs schon sehen, was ich meine. Meine Probleme sind: 1. Es funktioniert, aber nicht immer. 2. Er findet Wege nicht, die normalerweisse zu finden sind. 3. Kann es sein, dass die Wegstücke abgeschnitten sind. Er geht also keine Linie, sondert "teleportiert" sich auf einmal wo anders hin. Das sind die Probleme die ich andauern habe. Kann man ein Warten auch reinbauen?? Damit ich sehe, wie er geht. Das Problem is ja, das ich da nicht einfach das Warten reinbauen kann, was man normalerweisse reinbaut. Bei DelphiX muss alles ja nochmal gezeichnet werden. Und wenn sich alles nun in der Weg_Suchen und Makieren-procedure abspielt, dann dann kommt er ja nie zum Timer. WIe geht das dann?? Man müsste sozusagen den Timer abrufen |
Re: DelphiX + Backtracking (Wegfindung)
Die Lösung der Problem war natürlich was ganz Dummes:
Obwohl ich sowas drinn gehabt habe...
Delphi-Quellcode:
...hat das nicht gereicht. Man musste einen Rahmen rundherum ziehen, damit alles ging
if i+1<=15 then Weg_Suchen(i+1,k);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 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