![]() |
Re: Backtracking - Wege aus dem Labyrinth
Sehr gut, danke dir!!!! :thumb:
|
Re: Backtracking - Wege aus dem Labyrinth [Source online]
um alle aufmerksam zu machen
DER SOURCE IST DA!!! *freu* |
DP-Maintenance
Dieses Thema wurde von "Dax" von "Freeware" nach "Open-Source" verschoben.
|
Re: Backtracking - Wege aus dem Labyrinth [Source online]
So, hab mal die aktuelle Source (mit der ich die Präsentation gehalten habe) online gestellt.
Sollte evtl. noch jemand Interesse an der Präsentation haben (dadurch wird die Funktionsweise noch klarer), kann ich diese auch hochladen. |
Re: Backtracking - Wege aus dem Labyrinth [Source online]
Hallo,
wirklich super, sehr gutes Programm. :thumb: :thumb: Was mich noch interessieren würde: Wie erstelle ich ein neues Labyrinth als Bitmap? Gruß Jörg |
Re: Backtracking - Wege aus dem Labyrinth [Source online]
Danke :-)
Also ich weiß von Gimp, das es Labyrinte rendern kann. Allerdings benötigen die ein wenig Nachbearbeitung, da die Ränder nicht schwarz sind und das ganze nicht komplett durchgängig ist. Aber im Prinzip reicht schon Paint. Vielleicht schreib bald auch mal ein Programm, welches Labyrinte erstellen kann :-) |
Re: Backtracking - Wege aus dem Labyrinth [Source online]
Liste der Anhänge anzeigen (Anzahl: 1)
Da kann ich mich nur anschliessen,sehr gute Arbeit und vielen Dank für den OpenSource.
Bugbericht:
Delphi-Quellcode:
procedure TForm1.FindeWeg(x,y,i:integer);
begin . . . //alt //Delay(StrToint(edtDelay.Text)); //neu Delay(StrTointdef(edtDelay.Text,1)); Im Anhang noch ein Bitmap das auch funktioniert,mittelgroß ohne Ausgang |
Re: Backtracking - Wege aus dem Labyrinth [Source online]
Bugreport:
Wenn in eine laufende Wegsuche ein neues ungültiges Labyrinth geladen wurde kam es zu einer Zugriffsverletzung,ein erster Lösungsansatz:
Delphi-Quellcode:
Procedure TForm1.FindeWeg(x,y,i:integer);
begin //Wenn Ausgang gefunden / Programm beendet -> Breche alle Rekursionstiefen ab if gefunden or Application.Terminated then Exit; //Schritte insgesamt inc(c); //Rekursionstiefe inc(i); //Wenn Verzögerung an: Exakte Ausgabe mit Delay if Form1.rbtnVz.Checked then begin Ausgabe(i, x, y); Delay(StrTointdef(edtDelay.Text,1)); end //Im Speed-Modus nur alle 50000 Schritte malen -> sonst speed-modus zu langsam else if (c mod 50000) = 0 then Ausgabe(i, x, y); //EDIT while Length(Feld)<1 do begin gefunden:=True; exit; end; // Feld[x,y] := 2; letzte.X := X; letzte.Y := Y; if (Ziel.X = X) and (Ziel.Y = Y) then begin MessageDlg('Ziel gefunden!',mtInformation,[mbOK],0); Ausgabe(i,x,y); sg.Invalidate; gefunden := true; Exit; end else begin feld[X,Y] := 3; //Edit if Feld[x+1,y] = 1 then if not gefunden and (Feld[x+1,y] = 1) then FindeWeg(x+1,y,i); //Edit if Feld[x,y+1] = 1 then if not gefunden and (Feld[x,y+1] = 1) then FindeWeg(x,y+1,i); //Edit if Feld[x-1,y] = 1 then if not gefunden and (Feld[x-1,y] = 1) then FindeWeg(x-1,y,i); //Edit if Feld[x,y-1] = 1 then if not gefunden and (Feld[x,y-1] = 1) then FindeWeg(x,y-1,i); if not gefunden then feld[X,Y] := 2; if (i = 1) and not gefunden then begin Fehler(3,fFehler); sg.Invalidate; Ausgabe(i,x,y); Application.ProcessMessages; end; end; end; |
Re: Backtracking - Wege aus dem Labyrinth [Source online]
Danke, den ersten Post hab ich übernommen (kannte den Befehl noch gar nicht :-) ),
auch danke für den 2. Post und die Möglichkeit das zu lösen. Da ich das Programm aber noch morgen meinem Lehrer schicke muss, mache ich es mir etwas einfacher und deaktiviere einfach den "Laden" Button während eine Wegsuche läuft ;-) [Edit]Das Beispielbild mit der Erde ist cool, sowas hatte ich noch gar nicht getestet :-D[/Edit] |
Re: Backtracking - Wege aus dem Labyrinth [Source online]
Eine Frage: Wodurch sind die Start/Ziel Koordinaten definiert?
MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 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