# Java Labyrinth Programm



## Heinzi1991 (18. Oktober 2013)

Hallo liebe Community;

also ich hab ein Problem und komm nicht weiter; hier einmal eine kleine Erklärung:
Also wir an der Uni haben ein Java Program (darum in hier mein Post) wo ein Roboter 
dank selbsterstellten Regeln die wiefolgt aussehen (fff,x,y)->(x,umdrehen,y)[f=fels;x=eine Zahl am Boden; y=eine farbe]
ein Labyrinth abfährt und Diamanten aufzusammeln!
So ein paar kleine Details noch eis gibt vier Schwierigkeitsgrade: Labyrinth einfach, schwer, mit Loops, und mit freien Plätzen!

Eingang ist gleich der Ausgang
Roboter muss alle Felder besuchen
Roboter muss alle Diamanten einsammeln
Roboter muss wieder raus aus dem Labyrinth
Zufällige Labyrinthe 

Also bis zum schweren Labyrinth komme ich bestens zurecht, mit der "Rechten-Hand-Regel" aber bei den Loops scheitere ich schon;
hoffe mir kann jemand einen Tipp für die Lösung bereit stellen!

Hier ein Bild von einem Labyrinth mit Loops:



Bedanke mich schon im voraus und bei fragen einfach stellen; beantworte sie schnellstmöglichst und gewissenhaft!


----------



## sheel (18. Oktober 2013)

Hi und Willkommen bei tutorials.de,

Paar Fragen als Erstes 
Ist ein möglichst kurzer Gesamtweg gesucht oder einfach nur irgendeiner?

Was ist genau mit "freien Plätzen" im schwierigsten Grad gemeint?

Wie hat man das Labyrinth datenmäßig? Als Koordinaten der begehbaren Wegfelder oder...?

Ist "alle Diamanten einsammeln" nicht schon in "alle Felder besuchen" enthalten,
also sinnlos, noch extra hinzuschreiben?

Und





> dank selbsterstellten Regeln die wiefolgt aussehen (fff,x,y)->(x,umdrehen,y)[f=fels;x=eine Zahl am Boden; y=eine farbe]"


ist mir nicht ganz klar.

(Darf man _nur_ zustandslose Regeln verwenden,
also Aktion abhängig von der aktuellen Umgebung,
ohne "merken" von irgendwas)?


----------



## Heinzi1991 (18. Oktober 2013)

Einfach nur irgendeinen aber hier ein wie das Programm aufgebaut ist:



das ist ein labyrinth mit plätzen:



alle diamanten aufsuchen ist gleichzusetzen mit alle felder besuchen; aber form halber hab ich es dazugeschrieben!

und hier noch ein bild mit den regeln wie die aufgebaut sind: (hoffentich man erkennt alles)


----------



## sheel (18. Oktober 2013)

Gut...
und diese Zahl x, die kann man pro Feld setzen?
Also bei den Beispielen hast du ja x bisher immer leer/ignoriert.
Ist das so, dass man rechts vom -> auch eine Zahl für das Feld setzen kann, wo man gerade ist
und dann Regeln machen kann, die links vom -> prüfen/nur dann gemacht werden,
wenn die Zahl einen bestimmten Wert hat?

(und Farbe y ist vermutlich das selbe Prinzip?)

Wie hoch können die Zahlen werden?
Eventuell nur 0-9 oÄ. oder mehr?

Was passiert, wenn man es für die selbe Weg/Fels-Kombination Regeln mit Zahlenbedingung
und eine ohne gibt (und man ist auf einem Feld mit Zahl)?
Wird die Ohne-Zahl-Regel zusätzlich zu Zahlenregel gemacht oder nur,
wenn keine Zahl am Feld ist?

edit:
Wenn man rechts vom Pfeil eine neue Zahl setzt und eine Bewegung macht,
wird die Zahl am Feld gesetzt, wo man vor der Bewegung war, oder am Zielfeld?
Und die Farben gleich?

Wenn man auf einem Feld mit Zahl ist und eine Regel ausgeführt wird,
die rechts keine Zahl angibt (leer), wird die alte Zahl gelöscht oder bleibt sie unverändert?

(So, fertig gefragt 
Wenn das mit den Zahlen so ist wie ich mir vorstelle gibts eine ziemlich einfache Lösung)


----------



## Heinzi1991 (18. Oktober 2013)

hoffe ich kann mit diesem bild all deine fragen beantworten!
hab mich nur ein bisschen gespielt damit du sehen kannst was man alles machen kann,
also regeln bitte nicht ernst nehmen!
zahlen gehen von 0 bis 3


----------



## sheel (18. Oktober 2013)

Der Teil ist mir leider noch nicht klar:


> Was passiert, wenn man es für die selbe Weg/Fels-Kombination Regeln mit Zahlenbedingung
> und eine ohne gibt (und man ist auf einem Feld mit Zahl)?
> Wird die Ohne-Zahl-Regel zusätzlich zu Zahlenregel gemacht oder nur,
> wenn keine Zahl am Feld ist?
> ...


----------



## Heinzi1991 (18. Oktober 2013)

also der roboter setzt nur zahlen auf dem feld wo er gerade "steht"!
ist eine zahl am boden muss eine neue regel für diesen zustand erstellt werden! das gleiche gilt für die farben, er kann in 4 möglichen zustände hüpfen, natürlich muss man die passende regel gemacht haben, und ist man dann im einem farbzustand muss natürlich eine neue regel erstellt werden, die passt!


----------



## sheel (18. Oktober 2013)

Verfahren:
Man ist auf einem Feld.
Roboter steht so, dass das Feld, wo man hergekommen ist, hinten ist.

Nach der Reihe geht man jetzt links/oben/rechts durch, wenn da was begehbares ist,
was noch nicht besucht wurde, und macht für die jeweiligen Felder
das ganze Verfahren erneut (also das rechte vom rechten,
darin rechtes vom rechten vom rechten; oben vom rechten, usw...)

Wie viel der drei Wege man schon hat merkt man sich mit der Zahl.
Keine Zahl bedeutet 0, damit kann man auch prüfen,
ob ein Feld schon bearbeitet (besucht) wurde oder nicht.

Wenn man auf einem Feld mit Zahl 3 ist (l o r fertig) dreht man um und geht zurück
(weil das zwei Schritte sind: zB. wenn 3 dann rot machen und umdrehen.
Wenn rot dann entfärben und vorwärts)
Weil man dann für die Richtungen vom Ziel verkehrt dasteht:
Bevor mann einen der r-o-l-Wege begeht macht man das aktuelle Feld jeweils gelb.
Wenn man dann auf einem roten Feld steht, einfach umdrehen und entfärben.


Frage: Wenn man alle Felder durchhat und am Startfeld ist,
hört das Programm dann automatisch auf oder muss man
ein "jetzt Ende" in seinen Regeln haben (erkennen, wann aus ist)?

Frage: Nach der Methode wären am Schluss alle Felder mit der Zahl 3 belegt, nicht leer.
Macht das was?

Dann kann ich die Regeln etwas konkreter hinschreiben.


----------



## Heinzi1991 (19. Oktober 2013)

Das programm endet genau wenn man das startfeld erreicht und es ist egal welche zahlen am boden sind, und nicht der boden wird färbig sondern der roboter kann seine farbe ändern!


----------



## sheel (19. Oktober 2013)

Und mit den Zahlen auch so?
Also nicht pro Feld eine Zahl, nur der Roboter hat eine?

Dann gehts so wie gedacht schon mal überhaupt nicht.
Hmm...


----------



## Heinzi1991 (19. Oktober 2013)

Nein also der roboter kann nur farben annehmen, aber die zahlen können auf die felder kopiert werden!


----------



## sheel (19. Oktober 2013)

Ah, gut.
Dann geht der Farbanteil oben zwar nicht so wie geschrieben,
aber man könnte die Farben zB. l Angabe für die "Himmelsrichtung",
in die der Roboter gerade gedreht ist, verwenden.

Eine weitere Frage noch, die nur noch für die konkrete Umsetzung relevant ist:
"Umdrehen" dreht den Roboter amFeld, wo er gerade ist,
ohne auf ein anderes Feld zu fahren (oder)?
Gerade aus wechselt klarerweise das Feld.

Aber was ist mit Rechts/Links?
Drehen die nur am Feld oder fahren die dann auch gleich eins weiter?


----------



## Heinzi1991 (19. Oktober 2013)

also der roboter dreht sich immer am feld um! 
und das gleiche gilt bei links und rechts!


----------



## sheel (19. Oktober 2013)

Also, eine Möglichkeit folgt.
Ich hoffe, dass ich keine Fehler einbaue beim Hinschreiben.

"Umgebung" = Weg/Fels vorne/links/rechts
Farben sind farblos/grün/gelb/rot
Zahlen sind nichts/1/2/3

Wenn hinter dem -> nichts zur Zahl steht bedeutet das: die Zahl so lassen wie sie war.
Farbe ebenso

-------------------------------

Roboter Gelb, Zahl am Feld egal (also zahlenlos oder 1 oder 2 oder 3), Umgebung egal
->Gerade vorrücken, Rot

Rot, Zahl egal, Umgebung egal
->Links, Farblos

Grün, 1 oder 2 oder 3, Umgebung egal
->Umdrehen, Gelb

Grün, keine Zahl, Umgebung egal
->Links, Farblos

Farblos, 3, Umgebung egal
->Gerade, Rot


Keine Zahl, farblos, Umgebung: Gerade nicht möglich (Fels), l/r egal
->1, rechts
Keine Zahl, farblos, Umgebung: Gerade möglich, l/r egal
->1, grün, gerade

1, farblos, Umgebung: Gerade nicht möglich, l/r egal
->2, rechts
1, farblos, Umgebung: Gerade möglich, l/r egal
->2, grün, gerade

2, farblos, Umgebung: Gerade nicht möglich, l/r egal
->3, rechts
2, farblos, Umgebung: Gerade möglich, l/r egal
->3, grün, gerade

-------------------------------

So. Vielleicht funktionierts ja direkt so...
Das Aufteilen von meinen "oder" und "egal" in einzelne Regeln überlass ich dir


----------



## Heinzi1991 (19. Oktober 2013)

ok danke einmal für deine regeln, werde es in den nächsten tagen einmal ausprobieren und melde mich dann wenn es geklapt hat oder auch nicht!


----------

