Autor |
Beitrag |
Fiete
      
Beiträge: 617
Erhaltene Danke: 364
W7
Delphi 6 pro
|
Verfasst: So 03.02.08 14:12
Mit diesem Programm können einmal Labyrinthe generiert werden, desweiteren kann eine Simulation >Maus im Labyrinth< versucht werden.
Die Maus wird vor ein Labyrinth gesetzt und soll zum Ausgang laufen.
Den Weg vom Start zum Ziel wird sie mit zunehmenden Versuchen lernen.
Das Programm versucht das Lernen einer Maus zu simulieren, nicht den schnellstmöglichen Weg zum Ausgang zu finden.
Die normale Maus kann sich nur die letzte Kreuzung merken, die schlaue alle.
Die Mausintelligenz ließe sich sicher noch anders implementieren(Level, etc.).
Die Anzahl der Schritte wird festgehalten.
Nach einigen Versuchen hat die Maus den Weg gelernt und vergißt ihn auch nicht mehr.
Die Simulation des Gedächtnis wird über die Speicherung der besuchten Kreuzungen realisiert.
Läuft die Maus in eine Sackgasse dann wird der letzte Kreuzungswert um den Richtungswert vermindert. So wird in keine Sackgasse zweimal gelaufen.
Je mehr Kreuzungen das Labyrinth aufweist, desto länger dauert es, bis die Maus den kürzesten Weg gelernt hat.
Die erzeugten Labyrinthe lassen sich öffnen, speichern oder drucken.
Unter Optionen lassen sich Einstellungen wie Eingang, Ausgang, Länge, Breite, Ganghöhe, Verzögerung für die Mausgeschwindigkeit und der IQ der Maus einstellen.
Unter Labyrinth können Neu, Konstruieren, Wegsuche, Menschsuche und Maussuche aktiviert werden.
Wie wurde das Labyrinth implementiert?
Als Datenstruktur bietet sich ein Array an.
Da von jedem Feld die Wände registriert werden müssen (ähnlich wie bei Käsekästchen) reicht es nicht nur mit 1 oder 0 zu arbeiten.
Die Wände haben die Werte 1 (oben), 2 (rechts), 4(unten) und 8(links).
In jedem Feld steht die Summe der freien Wände. Es gibt also 16 Zelltypen(0 bis 15).
Zum Generieren: anfangs sind alle Wände gesetzt. Von einem Startpunkt wird zufällig eine Zelle mit dem Wert 0 gesucht und eine Wand gelöscht, dies wiederholt sich dann. Falls es keine unbenutzte Zelle in der Nähe gibt, wird zufällig eine Zelle gesucht, der schon eine Wand fehlt. So ist gewährleistet, dass alle Wände mit der Außenwand verbunden sind, es gibt keine freistehenden Wandbereiche.
Bei der Wegsuche wird der kürzeste Weg vom Start zum Ziel angezeigt.
Verirrt euch nicht!
Fiete
Moderiert von Christian S.: Überflüssige Zeilenumbrüche entfernt
Einloggen, um Attachments anzusehen!
_________________ Fietes Gesetz: use your brain (THINK)
Zuletzt bearbeitet von Fiete am Di 05.02.08 11:59, insgesamt 1-mal bearbeitet
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: So 03.02.08 14:27
Titel: Linien statt Punkte
Hi,
Nette Idee und nettes kleines Spielzeug
Eventuell die roten Punkte durch eine durchgehende Line ersetzen, das lässt sich visuell besser erfassen funde ich.
Edit: Wo ichs gerad wieder maximiere fällt mir auf, dass die roten Punkte dabei nicht refresht werden.
Ist zwar 'n bissel störend, aber dazu müsstest du denk' ich die Punkte speichern...
Edit2:Menschsuche funktioniert bei mir nicht und wenn ich das Programm während der Suche schließe, kommt zwar eine Warnung "der irre Garten wird geschlossen", aber ich muss die Suche erst abbrechen.
Edit3:  Okay, Menschsuche funzt - Ich dachte das wäre sowas wie eine "vorausschaend Planende Maussuche", also eine, die nicht nur rät und sich erinnert^^
Ich tät aber gern am Ende meine Schritte sehen
mfG,
Daniel
Zuletzt bearbeitet von Hidden am So 03.02.08 14:52, insgesamt 1-mal bearbeitet
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: So 03.02.08 14:39
schöne Sache  muss ich mal meinem kleinen Bruder zeigen, der steht auf so n zeugs XD
Finde auch lustig, wie die Maus die Wege lernt
Vorschläge:
a) Du könntest Start und Ziel farbig markieren
b) Wenn ich auf "Nochmal" drücke wenn die Maus den Weg gelernt hat, dann hat sie NICHT! den Weg nach einem Versuch gelernt.
c) die Punkte der Maus durch eine Linie zu ersetzen fände ich auch nett.
d) Zudem könntest du auch Punkte bzw. Linie beim Menschen einzeichnen lassen.
e) Lustig wäre vielleicht auch ein Modus in dem man gegen die Maus antritt, ggf. auch in mehreren Runden, da die Maus ja immer stärker wird.
@Hidden:
Die Menschensuche funzt über die Cursortasten, da musst du dann selber ran.
//Edit:
f) die Maussuche abbrechen müsste in die Liste "Labyrinth", am besten statt "Maus suchen" wenn suche läuft
die "geniale Maus" ist mal brotig...3 Felder vor Ziel biegt sie ab und durchsucht das ganze restliche Labyrinth (ca.90%). eine echte Maus wäre da wohl doch schlauer denk ich mal. Die hat ja auch Nase+Augen
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Fiete 
      
Beiträge: 617
Erhaltene Danke: 364
W7
Delphi 6 pro
|
Verfasst: So 03.02.08 15:24
Einige Vorschläge werde ich umsetzen.
Danke für die Hinweise.
Gruß
Fiete
Edit1: Wenn ein neues Labyrinth erstellt werden soll, dann können ALLE Einstellungen verändert werden.
Die Maus hat den Weg erst dann gelernt, wenn sie dreimal den kürzesten Weg erkannt hat.
Edit2: Folgende Änderungen gibt es jetzt: Start und Ziel sind markiert, Mausabbruch im Labyrinth-Menue, Menschsuche ist unsichtbar möglich, der Weg wird mit Pfeilen(Wingdings) angezeigt Farbe ist einstellbar, freie Mauern können über Rechtsclick auf Label Verzögerung angezeigt werden(war schon von Anfang an vorhanden  ), hat zur Konsequenz, daß die Wegsuche nicht aktiv ist, da es keinen eindeutigen Weg mehr gibt.
Die neue Version ist hochgeladen
_________________ Fietes Gesetz: use your brain (THINK)
Zuletzt bearbeitet von Fiete am Di 05.02.08 12:08, insgesamt 2-mal bearbeitet
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: So 03.02.08 20:38
Xion hat folgendes geschrieben: |
b) Wenn ich auf "Nochmal" drücke wenn die Maus den Weg gelernt hat, dann hat sie NICHT! den Weg nach einem Versuch gelernt. |
Ich denke das Gelernte wird dann gelöscht, weil sie immer den selben weg nehmen würde
Bei mir funktionierts: Maus auf "genial"
1316,528,270,1316,250,264,244(min),244,244
9 Versuche, 4700 Schritte ges.
Wenn ich den Weg anzeigen lasse, vermisse ich die Länge.
Das Feature, dass es keine isolierten Mauerstücke geben kann betrachte ich als Bug, da man es nicht abschalten kann
Zerstört deinen Bearbeitungsalgorithmus, oder?^^
Warum sind einige Optionen deaktivert
Moderiert von Narses: BMP in GIF gewandelt
Einloggen, um Attachments anzusehen!
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 04.02.08 10:17
Hidden hat folgendes geschrieben: | Xion hat folgendes geschrieben: |
b) Wenn ich auf "Nochmal" drücke wenn die Maus den Weg gelernt hat, dann hat sie NICHT! den Weg nach einem Versuch gelernt. |
Ich denke das Gelernte wird dann gelöscht, weil sie immer den selben weg nehmen würde
Bei mir funktionierts: Maus auf "genial"
1316,528,270,1316,250,264,244(min),244,244
9 Versuche, 4700 Schritte ges.
|
Ja, das schon, nur hat sie ja den Weg nicht nach einem Versuch gelernt, wenn ich sage sie soll nochmal durchlaufen. Sondern sie hat ihn (wie in der Meldung vorher) in 9 Versuchen gelernt. Ich will ja nur, dass sie nochmal durchrennt 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
huuuuuh
      
Beiträge: 665
Erhaltene Danke: 19
win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
|
Verfasst: Mi 19.03.08 21:34
mich stört das man das programm während der maussuche nich schließen kann. aber ansonsten - ser gut
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Mi 19.03.08 22:01
Die Maus lernt aber scheinbar auch nicht, wenn sie so läuft :
923, 1304, 245, 245, 245 , 245, 245, 245, 245 Es kommt erst nach dem 9ten Mal die Meldung.
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mi 19.03.08 22:37
Hi,
Anscheinend ist das einigen hier nicht klar: gelernt ist der Weg, wenn die Memory-Datei den kompletten Weg enthält -> weiteres durchlaufen keinen Sinn mehr macht! Das Programm simuliert das lernen einer Maus, die kann das nicht beim ersten Mal, sondern lernt durch Erfolg und Misserfolg.
Dass die Maus lernt sieht man daran, dass die benötigte Zeit tendenziell kürzer wird.
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
|