AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Backtracking - Wege aus dem Labyrinth [Source online]
Thema durchsuchen
Ansicht
Themen-Optionen

Backtracking - Wege aus dem Labyrinth [Source online]

Ein Thema von Flips · begonnen am 14. Feb 2008 · letzter Beitrag vom 16. Feb 2008
Antwort Antwort
Seite 2 von 3     12 3      
Flips
Registriert seit: 17. Feb 2005
Hi.

Das folgende Projekt ist eine Projektarbeit aus dem Informatikunterricht.
Die Wahl des Themas war den Schülern freigestellt, es sollte nur ein 2D-Array benutzt werden, also sehr anspruchsvoll

Das Programm ist nun fertig.
Es dient dazu, den Computer rekursiv einen Weg aus dem Labyrinth suchen zu lassen.
Die genaue Vorgehensweise findet ihr als Anhang.
Was da nicht drin steht ist eine neue Funktion, grau sind die besuchten Felder und gelb der aktuelle Idealweg.

Wollte nur mal von euch wissen, wie ihr das Programm denn so findet und ob es bei euch läuft und ob es evtl. Bugs hat die mir noch nicht aufgefallen sind.
Ich weiß, man könnte noch 1000 Sachen einbauen aber das würde den Rahmen des Projekts sprengen und mein Partner der erst seid nem Jahr Delphi lernt (dabei aber sehr erfolgreich ist) muss das ja auch verstehen.

Lg und THX,
Flips

Ps: Sind zwei Beispiellabyrinthe dabei, wenn ihr selbst eins macht dann muss dieses an allen Rändern geschlossen (schwarz sein)

Aktuelle Source ist nun auch dabei
Angehängte Dateien
Dateityp: zip backtracking_582.zip (519,8 KB, 181x aufgerufen)
Dateityp: zip backtracking_162.zip (6,1 KB, 91x aufgerufen)
 
Flips

 
Delphi 7 Professional
 
#11
  Alt 14. Feb 2008, 21:51
Sehr gut, danke dir!!!!
Philipp F.
  Mit Zitat antworten Zitat
Benutzerbild von STS301
STS301

 
Delphi 7 Personal
 
#12
  Alt 15. Feb 2008, 14:13
um alle aufmerksam zu machen

DER SOURCE IST DA!!! *freu*
Sebastian
  Mit Zitat antworten Zitat
15. Feb 2008, 14:14
Dieses Thema wurde von "Dax" von "Freeware" nach "Open-Source" verschoben.
Flips

 
Delphi 7 Professional
 
#14
  Alt 15. Feb 2008, 16:23
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.
Philipp F.
  Mit Zitat antworten Zitat
Benutzerbild von jmit
jmit

 
Turbo Delphi für Win32
 
#15
  Alt 15. Feb 2008, 20:54
Hallo,

wirklich super, sehr gutes Programm.

Was mich noch interessieren würde: Wie erstelle ich ein neues Labyrinth als Bitmap?

Gruß Jörg
  Mit Zitat antworten Zitat
Flips

 
Delphi 7 Professional
 
#16
  Alt 15. Feb 2008, 21:20
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
Philipp F.
  Mit Zitat antworten Zitat
busybyte
 
#17
  Alt 15. Feb 2008, 22:22
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
Angehängte Grafiken
Dateityp: bmp earth1_176.bmp (21,2 KB, 34x aufgerufen)
  Mit Zitat antworten Zitat
busybyte
 
#18
  Alt 16. Feb 2008, 00:55
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;
  Mit Zitat antworten Zitat
Flips

 
Delphi 7 Professional
 
#19
  Alt 16. Feb 2008, 16:32
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 [/Edit]
Philipp F.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#20
  Alt 16. Feb 2008, 17:36
Eine Frage: Wodurch sind die Start/Ziel Koordinaten definiert?

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 17:56 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