Autor Beitrag
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 617
Erhaltene Danke: 364

W7
Delphi 6 pro
BeitragVerfasst: 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 user profile iconChristian 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 03.02.08 14:27 
Titel: Linien statt Punkte
Hi,

Nette Idee und nettes kleines Spielzeug :D

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: :oops: 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 :P

mfG,
Daniel


Zuletzt bearbeitet von Hidden am So 03.02.08 14:52, insgesamt 1-mal bearbeitet
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: 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. :mrgreen:

//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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 617
Erhaltene Danke: 364

W7
Delphi 6 pro
BeitragVerfasst: So 03.02.08 15:24 
Einige Vorschläge werde ich umsetzen.

Danke für die Hinweise. :wave:

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 :mrgreen: ), 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 03.02.08 20:38 
user profile iconXion 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 :D
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 :roll:
Zerstört deinen Bearbeitungsalgorithmus, oder?^^

Warum sind einige Optionen deaktivert :?:

Moderiert von user profile iconNarses: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Mo 04.02.08 10:17 
user profile iconHidden hat folgendes geschrieben:
user profile iconXion 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 :D
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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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)