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 11:03] – [Welt dynamisch 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: 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:
Zeile 118: Zeile 119:
    MyRobot() {    MyRobot() {
       super(2, 3, 10, 10);       super(2, 3, 10, 10);
 +      int speed = SystemTools.getSpeed();
 +      SystemTools.setSpeed(-1);
       RobotWorld rw = getWelt();       RobotWorld rw = getWelt();
       for (int i = 0; i < 30; i++) {       for (int i = 0; i < 30; i++) {
Zeile 123: Zeile 126:
             "rot", Random.randint(1, 2));             "rot", Random.randint(1, 2));
       }       }
 +      SystemTools.setSpeed(speed);
    }    }
-} +} </script>
- </script>+
  
 </div> </div>
Zeile 132: Zeile 135:
  
  
 +=== 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.1650013386.txt.gz · Zuletzt geändert: 2022/04/15 11:03 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki