Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:robot:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
api:documentation:robot:start [2022/04/15 09:18] – [Welt vorbesetzen] Martin Pabstapi:documentation:robot:start [2022/04/15 11:30] – [Aufgabenstellungen für Schüler/innen vorbereiten] Martin Pabst
Zeile 49: Zeile 49:
 y1     1r y1     1r
 2     2 2     2
-B1m111111 +B1mR111111m 
-""");</script>+"""); 
 +//y1     1r bedeutet: Umschalten zur Ziegelfarbe Gelb, 
 +//dann einen Ziegel setzen, 5 leere Felder, wieder einen Ziegel, 
 +//dann umschalten zur Ziegelfarbe rot. 
 +</script>
  
 </div> </div>
Zeile 65: Zeile 69:
   * 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.   * 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.
 </WRAP> </WRAP>
 +
 +===== Welt dynamisch vorbesetzen =====
 +<WRAP center round info 80%>
 +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.
 +
 +</WRAP>
 +== Beispiel: ==
 +<HTML>
 +
 +<div class="java-online" style="height: 300px; width: 80%" data-java-online="{'withBottomPanel': false, 'id': 'robot_3'}">
 +
 +<script type="text/plain" title="Robot3.java">
 +new MyWorld();
 +Robot r = new Robot();
 +
 +class MyWorld extends RobotWorld {
 +   MyWorld() {
 +      super(10, 10);
 +      for (int i = 0; i < 30; i++) {
 +         setzeZiegel(Random.randint(1, 10), Random.randint(1, 10),
 +            "rot", Random.randint(1, 2));
 +      }
 +   }
 +} </script>
 +
 +</div>
 +
 +</HTML>
 +
 +===== 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:
 +
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 450px; width: 100%" data-java-online="{'withBottomPanel': true, 'id': 'robot_4'}">
 +
 +<script type="text/plain" title="Hauptprogramm.java">
 +MyRobot r = new MyRobot();
 +// Ergänze hier ein Programm, das den Roboter alle Ziegel 
 +// aufheben lässt:
 +
 +
 + </script>
 +<script type="text/plain" title="Vorgabe.java">
 +class MyRobot extends Robot {
 +   MyRobot() {
 +      super(2, 3, 10, 10);
 +      int speed = SystemTools.getSpeed();
 +      SystemTools.setSpeed(-1);
 +      RobotWorld rw = getWelt();
 +      for (int i = 0; i < 30; i++) {
 +         rw.setzeZiegel(Random.randint(1, 10), Random.randint(1, 10),
 +            "rot", Random.randint(1, 2));
 +      }
 +      SystemTools.setSpeed(speed);
 +   }
 +} </script>
 +
 +</div>
 +
 +</HTML>
 +
 +
 +=== 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:
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 450px; width: 100%" data-java-online="{'withBottomPanel': true, 'id': 'robot_5'}">
 +
 +<script type="text/plain" title="Hauptprogramm.java">
 +StaubsaugerRobot r = new StaubsaugerRobot();
 +r.start();
 +
 +class StaubsaugerRobot extends MyRobot {
 +   void start() {
 +
 +      // Schreibe hier ein Programm, das den Roboter alle Ziegel aufheben lässt:
 +
 +      
 +
 +
 +   }
 +}
 + </script>
 +<script type="text/plain" title="Vorgabe.java">
 +class MyRobot extends Robot {
 +   MyRobot() {
 +      super(2, 3, 10, 10);
 +      int speed = SystemTools.getSpeed();
 +      SystemTools.setSpeed(-1);
 +      RobotWorld rw = getWelt();
 +      for (int i = 0; i < 30; i++) {
 +         rw.setzeZiegel(Random.randint(1, 10), Random.randint(1, 10),
 +            "rot", Random.randint(1, 2));
 +      }
 +      SystemTools.setSpeed(speed);
 +   }
 +} </script>
 +
 +</div>
 +
 +</HTML>
  
  
api/documentation/robot/start.txt · Zuletzt geändert: 2022/04/15 11:35 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki