Das das Prog in der letzten Schleife hängt, ist völlig klar. Du musst das so schreiben:
Code:
drehelinks //Das ist nur dafür da, damit gleich am Anfang gecheckt wird, ob der Robo schon mit dem
drehelinks //Rücken zur Wand steht
solange nicht istwand //Steht der Robo an der Wand-Schleife
vorwärts
~schleife
drehelinks
drehelinks
mit istwand wird gecheckt, ob der Robo vor einer Wand steht, wenn du ihn rückwärts bewegst, kommt er nie vor eine Wand. Wenn du auf die "Welt" des Roboters klickst, kannst du ihn mit den Pfeiltasten steuern (in der Entwurfszeit) und ihn so an die Stelle bringen, an die du ihn haben willst. Mit den Icons in der Werkzeugleiste geht das auch. Mit Z legst du einen Baustein, mit A hebst du ihn auf. Mit L drehst du ihn links, mit R rechts.
Ach ja und das mit der Abfrage wird nicht hinhauen, da man um die Abfrage zu speichern Variablen bräuchte, die ziemlich schwer ins Programm einzubauen sind (Also zur Laufzeit benutzerdefinierte Variablen deklarieren? Ich hab k.a. wie das geht.)
Es gibt noch 3 Befehle, stehen nicht in der Hilfe und werden auch nicht gehighlightet.
§d
für d entweder 'o','u','l','r' einsetzen (ohne Hochkommas). Gibt dem Robo die Richtung d
$xy
setzt den robo an die Pos x,y (oben-links ist pos 0,0, unten rechts ist pos 9,9)
%xy
schiebt den robo um x nach rechts und um y nach unten (Funzt leider nicht mit negativen Zahlen)
ACHTUNG! Diese Befehle sind extrem fehlerfreudig! Sie funktionieren nur mit den korrekten Parametern, ansonsten kann es sein, dass der Roboter komplett verschwindet oder das Programm abschmiert. Zwischen den Parametern und dem Anfangszeichen auf keinen Fall Leerzeichen einfügen:
Beispiel:
§u Setzt den Robo nach unten
§1 oder §d oder § u Nichts passiert oder der Robo verschwindet vom Feld.
$11 Setzt den Robo auf pos 1,1
$ 11 oder $ag Nichts passiert.
%11 Schiebt den Robo um 1,1 nach unten-rechts
% 11 oder %ab Nichts passiert.