Java Labyrinth Programm

Heinzi1991

Erfahrenes Mitglied
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:
marvin.png

Bedanke mich schon im voraus und bei fragen einfach stellen; beantworte sie schnellstmöglichst und gewissenhaft!
 
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)?
 
Einfach nur irgendeinen aber hier ein wie das Programm aufgebaut ist:
marvin1.png

das ist ein labyrinth mit plätzen:
marvin2.png

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)
marvin3.png
 
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 :D
Wenn das mit den Zahlen so ist wie ich mir vorstelle gibts eine ziemlich einfache Lösung)
 
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
marvin4.png
 
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?

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 :D
Wenn das mit den Zahlen so ist wie ich mir vorstelle gibts eine ziemlich einfache Lösung)
 
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!
 
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.
 
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!
 
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...
 
Zurück