Raira Geschrieben 9. November 2008 Teilen Geschrieben 9. November 2008 Hallo, also erstmal muss ich sagen,dass ich kein Informatiker bin,sondern dieses Fach lediglich dieses Jahr in der Schule gewählt habe. Ich bin gleich auf ein Problem gestoßen Unsere Aufgabe lautet: In Logo einen Roboter programmieren,der aus jedem Labyrinth rausfindet (aus dem es geht) und was wir über das Labyrinth wissen: Wanddicke 10 Wandfarbe schwarz [ 0 0 0] Eingangsfarbe blau Ausgangsfarbe grün Also habe ich einen Rechtsgeher entworfen,der immer rechts geht, wenn er kann und wenn nicht sich je nach Farbe etc. so dreht,dass er rechts gehen kann. Die Prozedur sieht folgendermaßen aus: pr robo setpencolor [255 0 0] setpensize [10] re 90 sh vw 10 wenn gleich? pixel [0 0 255] [rw 10 sa vw 10 ende] wenn gleich? pixel [255 255 255] [rw 10 sa vw 10 robo] wenn gleich? pixel [255 0 0] [rw 10 li 90 vw 10 wenn gleich? pixel [255 255 255] [rw 10 sa vw 10 robo]] wenn gleich? pixel [0 0 0] [rw 10 li 90 vw 10 wenn gleich? pixel [255 255 255] [rw 10 sa vw 10 robo] wenn gleich? pixel [0 0 0] [rw 10 li 90 vw 10 wenn gleich? pixel [255 255 255] [rw 10 sa vw 10 robo] wenn gleich? pixel [0 0 0] [rw 10 li 90 robo]]] ende Das kommt dann auch wunderbar durch "normale"Labyrinthe durch: Das Problem sind dann etwa solche "Sackgassen". Zufällig bin ich darauf gekommen,dass es bei einfachen Sackgassen, also wo der Igel einfach nur wieder rückwärts rauslaufen muss, es gut funktioniert, wenn man zwischen den letzten Teil der Prozedur und "ende" einfach noch einfügt: "setpencolor [ 0 255 255 ] (türkis) rw 10 sa vw 10 robo" Allerdings gibt es noch folgende Problemsackgassen: Und hier liegt mein wirkliches Problem: ich komm einfach nicht dahinter, wie ich ´dem Programm sage, dass es solang der roten Spur folgen kann, bis der Rechtsgeher wieder funktioniert. Wie man, denke ich, erkennen müsste liegt dem ganzen ja die Rekursion zur Grunde. Dieser Zusatz,der dazu führt "einfache Sackgassen" auch lösen zu können, ist denke ich, nicht ausbaufähig und es war eher Zufall,dass sich das ergeben hat. Hat jemand von euch vielleicht eine Idee, wie ich mein Programm in dieser Hinsicht erweitern kann? Es ist wirklich sehr wichtig. Vielen Dank schon im Vorraus, Raira Achja,dass die Bilder nicht funktionieren, hab ich leider auch gemerkt, aber ich kümmer mich da morgen drum,vielleicht kann ja jemand mein Problem trotzdem [ansatzweise] verstehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_KaelteContainer Geschrieben 10. November 2008 Teilen Geschrieben 10. November 2008 ich werd aus deinem Code da nicht ganz schlau, aber ich kenne diese "Rechtsdreher" in der folgenden Form: schleife anfang wenn gradeaus frei dann geh grade aus sonst drehe rechts schleife ende oder hab ich dein der immer rechts geht, wenn er kann falsch verstanden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nezach Geschrieben 10. November 2008 Teilen Geschrieben 10. November 2008 Sinnig wäre ein Roboter, der sich mit der rechten Hand an der Wand festhält: wenn rechts wand { wenn vorne wand { drehe links } sonst { gehe vor } } sonst { drehe rechts gehe vor } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.