Inhaltsverzeichnis

Die Klassen Robot und RobotWorld

Die Klassen Robot und RobotWorld sind dem auf Mebis frei erhältlichen Programm Robot Karol von Ulli Freiberger nachempfunden. Es lohnt sich, auch einen Blick aufs Original und insbesondere die sehr gute beiliegende Dokumentation zu werfen!

Beispielprogramm

Mausinteraktion

Durch Klicken und Ziehen im Bild kann die Kameraposition verändert werden. Mithilfe des Mausrads kann man zoomen.

Methoden des Roboters

Die Methoden des Roboters sind hier beschrieben.

Welt vorbesetzen

Die Robot-Klasse besitzt einen Konstruktor, dem die Startposition des Roboters sowie eine initiale Vorbesetzung der Welt mit Ziegeln und Marken in Form eines Strings übergeben werden kann. Es bietet sich an, das String-Literal in Form eines Java Text-Blocks (drei ") zu schreiben. Der String hat folgenden Aufbau:

  • Jede Zeile steht für eine Reihe in der Welt (von West nach Ost). Die Zeilen werden durch einen Zeilenumbruch („\n“) abgeschlossen.
  • Ein Leerzeichen steht für ein leeres Quadrat in der Welt.
  • Der Unterstrich (_) steht für ein Quadrat mit einem Marker, aber keinem Ziegel.
  • Die Ziffern 1, 2, …, 9, 0 stehen für 1, 2, …, 10 Ziegel auf einem Feld.
  • Die gesetzten Marken sind standardmäßig gelb. Die Zeichen R, Y, G, B schalten die Markenfarbe um zu Rot, Gelb, Grün, Blau. Alle nachfolgenden Marken werden in der neuen Farbe gesetzt.
  • Die gesetzten Ziegel sind standardmäßig rot. Die Zeichen r, y, g, b schalten die Ziegelfarbe um zu Rot, Gelb, Grün, Blau. Alle nachfolgenden Ziegel werden in der neuen Farbe gesetzt.

Welt dynamisch vorbesetzen

Natürlich kann man die Welt auch dynamisch (z.B. mit Blöcken auf zufälligen Positionen) vorbesetzen. Dazu dienen die Methoden setzeZiegel(x, y, farbe, anzahl) und setzeMarke(x, y, farbe) der Klasse RobotWorld.

Bemerkung: Die Koordinaten x und y beginnen bei 1.

Beispiel:

Aufgabenstellungen für Schüler/innen vorbereiten

Da das Robot-Objekt Zugriff auf seine Welt hat, kann man die Vorbesetzung der Welt natürlich auch durch Erben von der Robot-Klasse erreichen. Dadurch ist im Hauptprogramm nurmehr eine einzige Zeile erforderlich, um den Roboter „startklar“ zu machen. Diese Variante eignet sich daher besonders, um Schüler/innen vorbesetzte Welten zur Verfügung zu stellen:

Variante mit Anweisungen ohne Punktschreibweise

wenn die Schüler/innen ihr Programm innerhalb einer Methode des Roboters schreiben, können sie auf die Punktschreibweise verzichten. Eine Aufgabenstellung dazu könnte so aussehen:

Natürlich könnte man den Aufruf von r.start() in Zeile 2 noch verbergen, indem man der Klasse MyRobot eine abstrakte Methode start hinzufügt und diese vom Konstruktor aus aufruft. Ich denke aber, dass dies den Schüler/innen in ihrem Lernprozess eher schadet, da dann der Ausführungsweg vom Programmstart aus für sie nur noch schwer durchschaubar ist.