Dokumentation
Besispielprogramme
Übersicht
Grundbefehle
Programmierung von Strukturen
Beispiel-Programme
- Schreibe deinen Namen
- Finde das Signallicht
- Linien-Folger
- Labyrinth-Läufer
Ausbildung

Beispiel-Programme

In den folgenden Beispiel-Programmen wirst du sehen, wie Grundbefehle und Programmstrukturen zu interessantem Verhalten des Roboters führen können. Versuche zu verstehen wie das Programm arbeitet. Noch besser ist es, wenn du den Programm-Code kopierst und in das RoboMind Befehlsfenster einfügst. Vergewissere dich vor dem Start, dass du die richtige Karte verwendest.

Beispiel 1 : Schreibe deinen Namen

Weil der Roboter malen kann, kannst du auch einfache Mal-Programme erstellen. Benutzte die Befehle maleWeiß() und beendeMalen() um dem Roboter zu befehlen, dass er den Pinsel benutzen oder verstauen soll. Wenn du den Roboter fahren lässt, wird er eine weiße Linie auf den Boden malen. Auf diese Weise kannst du Buchstaben wie ein 'A' malen. In der Karte 'openArea.map' wirst du genügend Platz für ein kleines Kunstwerk haben. Versuche mit der Fernbedienung (Start / Fernbedienung) den Roboter malen zu lassen. 

Weitere Infos: Grundbefehle: malen, fahren

write 'A'

#Buchstabe 'A'
maleWeiß()


vorwärts(2)
rechts()
vorwärts(1)
rechts()
vorwärts(2)
rückwärts(1)
rechts()
vorwärts(1)


beendeMalen()

 

Beispiel 2 : Finde den weißen Punkt

Auf der Karte findSpot1.map, die du im Hauptordner der Karten findest, findest du irgendwo auf der linken Seite eine Nische mit einem weißen Punkt. Nehmen wir an, dass du vorher nicht weißt, in welcher Entfernung sich die Nische mit dem Punkt befindet. Wie kann der Roboter ihn finden, wenn er irgendwo neben der Wand startet? Natürlich kannst du die Schritte zählen, die der Roboter benötigt. Aber es gibt bessere Möglichkeiten.

Lasse den Roboter jedes Mal einen Schritt vorwärts fahren und lassen ihn prüfen, ob es links schon einen weißen Punkt gibt. Wenn er einen Punkt sieht, soll er dort hinfahren, drauf stehen bleiben und dann ist er fertig. Ansonsten sollte er einen weiteren Schritt fahren und wieder prüfen ob schon ein Punkt neben ihm ist. Dies kann man in einer Schleife wiederholen.

Siehe auch: Grundbefehle: fahren, schauen, Programmstrukturen: Schleifen, Wenn-Bedingungen, Ende

find spot
wiederhole(){
    wenn(linksIstWeiß()){
        # auf der linken Seite gibt es einen weißen Punkt
        links()
        vorwärts(1)
        ende
    }
    sonst{
        # Es gibt noch keinen weißen Punkt
        vorwärts(1)
    }
}

Eine andere Möglichkeit mit dem selben Ergebnis zeigt folgendes Programm:

wiederholeSolange(linksIstEinHindernis()){
    vorwärts(1)
}


links()
vorwärts(1)
            

 

Bespiel 3 : Linien-Folger

Auf der Karte default.map findest du im Osten eine weiße Linie. Diese Linie verläuft durch den Raum. Wie kannst du den Roboter dieser Spur folgen lassen?

Die Lösung ist dem vorherigen Beispiel etwas ähnlich. Nachdem der Roboter an den Anfang der Spur gebraucht wird, entscheidet er nach und nach was er tun muss. 

Siehe auch: Grundbefehle: fahren, schauen, Programmierstrukturen: Schleifen, Prozduren, Wenn-Bedingungen, Ende

line follower
# Fahre zum Anfang der Linie
rechts()
vorwärts(8)


# Bleibe jedes Mal auf der Spur 
wiederhole()
{
    wenn(vorneIstWeiß()){	
        vorwärts(1)
    }
    sonst wenn(rechtsIstWeiß()){
        rechts()
    }
    sonst wenn(linksIstWeiß()){
        links()
    }
    sonst wenn(vorneIstEinHindernis()){
        ende
    }
}
      

Eine andere Möglichkeit verwendet so genannte rekursive Prozeduren. Prozeduren sind kleine Programme, die sich selbst (rekursiv) aufrufen können. In dem folgenden Programm findest du die Prozedur folgen(). Nach dem der richtige Schritt durchgeführt wurde, siehst du, dass in der Prozedur folgen() die eigene Prozedur folgen() wieder aufgerufen wird. Dadurch erhältst du eine Reihe von  folgen(...folgen(...folgen(...)...)...), die jedes Mal die richtige Anweisung ausführt. Dieser zyklische Aufruf der eigenen Prozedur wird Rekursion genannt und beim ersten Mal wird es dir sicher etwas sonderbar vorkommen. Aber keine Angst, probiere es einfach aus und spiele damit, dann wirst du die Funktionsweise verstehen.

# Fahre zum Anfang der Linie
rechts()
vorwärts(8)


# Starte Verfolgung
folgen()


# Rekursiver Aufruf der Verfolgung
prozedur folgen(){
    wenn(vorneIstWeiß()){	
        vorwärts(1)
        folgen()
    }
    sonst wenn(rechtsIstWeiß()){
        rechts()
        folgen()
    }
    sonst wenn(linksIstWeiß()){
        links()
        folgen()
    }
    sonst wenn(vorneIstEinHindernis()){
        # Beende den aktuellen Aufruf
        # (weil es gibt nichts mehr nach diesem  
        # return (zurück), alle Aufrufe werden beendet
        # und das Programm stoppt.)
        return
    }
}

 

Besispiel 4 : Labyrinth-Läufer

Wie findet man normaler Weise den Weg aus einem Labyrinth? Es scheint, dass diese schwierige Aufgabe eine einfache Lösung hat. Wenn du dich immer rechts an der Wand hältst (oder immer links), wirst du den Ausgang auf jeden Fall finden.

Das folgende Programm lässt den Roboter das Signallicht finden (Karte: maze1.map)  

Siehe auch: Grundbefehle:fahren, schauen, Programmstrukturen: Schleifen, Wenn-Bedingungen, Ende

wiederhole(){	
    wenn(rechtsIstEinHindernis()){
        wenn(vorneIstFrei()){
            vorwärts(1)
        }
        sonst{
            links()
        }
    }
    sonst{
        rechts()
        vorwärts(1)
    }

    wenn(vorneIstEineSonde()){	
        nimmAuf()
        ende
    }
}
      

RoboMind - Copyright © 2005 - 2016 - Research Kitchen