Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX + Backtracking (Wegfindung) (https://www.delphipraxis.net/33038-delphix-backtracking-wegfindung.html)

ISAS 31. Okt 2004 19:48


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:
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;
Das wärs. Was ist daran falsch bzw noch nicht ganz korekt?? :gruebel:

-NIP- 31. Okt 2004 20:31

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-

ISAS 1. Nov 2004 09:55

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

ISAS 1. Nov 2004 17:07

Re: DelphiX + Backtracking (Wegfindung)
 
Die Lösung der Problem war natürlich was ganz Dummes:

Obwohl ich sowas drinn gehabt habe...
Delphi-Quellcode:
if i+1<=15 then Weg_Suchen(i+1,k);
...hat das nicht gereicht. Man musste einen Rahmen rundherum ziehen, damit alles ging


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz