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
api:documentation:robot:start [2022/04/15 10:44] – [Welt vorbesetzen] Martin Pabstapi:documentation:robot:start [2022/04/15 11:35] (aktuell) – [Aufgabenstellungen für Schüler/innen vorbereiten] Martin Pabst
Zeile 99: Zeile 99:
 </HTML> </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>
 +
 +<WRAP center round tip 80%>
 +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.
 +</WRAP>
  
api/documentation/robot/start.1650012271.txt.gz · Zuletzt geändert: 2022/04/15 10:44 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki