Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:hamster:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


api:documentation:hamster:start [2024/08/31 10:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Java Hamster ======
 +<WRAP center round info 60%>
 +Die Implementierung der Klassen ''JavaHamsterWorld'' und ''Hamster'' orientiert sich stark am Hamstermodell von [[https://www.java-hamster-modell.de/index2.html|Dr.-Ing. Dietrich Boles, Universität Oldenburg]]. Dort finden Sie eine ausgezeichnete Dokumentation, insbesondere auch drei kostenlose pdf-Ebooks mit vielen Beispielen und didaktischen Hinweisen.
 +</WRAP>
  
 +===== Welt erstellen =====
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 350px; width: calc(100% - 30px)" data-java-online="{'withBottomPanel': false, 'id': 'hamster1'}">
 +
 +<script type="text/plain" title="Test1.java">
 +new World(1000, 1000);
 +JavaHamsterWorld jhw = new JavaHamsterWorld(10, 4);
 +jhw.scale(2);
 +jhw.init("""
 +mmmmmmmmmm
 +m 1 2 3 4m
 +m        m
 +mmmmmmmmmm
 +""");
 +
 +Hamster h = new Hamster(jhw, 1, 1, Hamster.OST, 0);
 +while (h.vornFrei()) {
 +   h.vor();
 +   while (h.kornDa()) {
 +      h.nimm();
 +   }
 +}
 +h.linksUm(); h.linksUm(); h.linksUm();
 +h.vor();
 +while (!h.maulLeer()) {
 +   h.gib();
 +}
 +
 +h.linksUm(); h.linksUm(); h.linksUm();
 +h.vor();</script>
 +
 +</div>
 +
 +</HTML>
 +
 +
 +===== Aufgabe mit Lösung =====
 +<WRAP center round tip 80%>
 +Will man Schüler/innen Aufgaben an die Hand geben, so bietet es sich an, eine Aufgaben-Klasse entweder als Unterklasse von ''JavaHamsterWorld'' oder von ''Hamster'' zu erstellen, in deren Konstruktor die Welt initialisiert wird. Die Schüler/innen erstellen dann eine Unterklasse, die ihre Lösung enthält. Im folgenden Beispiel sehen Sie eine mögliche Variante, bei der die Schüler/innen auf die Punktschreibweise für die Methodenaufrufe verzichten können.
 +</WRAP>
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 600px; width: calc(100% - 30px)" data-java-online="{'withBottomPanel': true, 'id': 'hamster2'}">
 +
 +<script type="text/plain" title="Lösung.java">
 +new Lösung1().run();
 +
 +class Lösung1 extends Hamster1 {
 +   public void run() {
 +      while (vornFrei()) {
 +         vor();
 +         while (kornDa()) {
 +            nimm();
 +         }
 +      }
 +      linksUm(); linksUm(); linksUm();
 +      vor();
 +      while (!maulLeer()) {
 +         gib();
 +      }
 +
 +      linksUm(); linksUm(); linksUm();
 +      vor();
 +      
 +   }
 +}</script>
 +
 +<script type="text/plain" title="Aufgabe.java">
 +class Hamster1 extends Hamster {
 +   
 +   Hamster1() {
 +      super(new JavaHamsterWorld(10, 4), 1, 1, Hamster.OST, 0);
 +      JavaHamsterWorld jhw = getWorld();
 +      jhw.scale(2);   // vergrößern
 +
 +      jhw.init("""
 +      mmmmmmmmmm
 +      m 1 2 3 4m
 +      m        m
 +      mmmmmmmmmm
 +      """);
 +      
 +   }
 +
 +}
 +</script>
 +
 +</div>
 +
 +</HTML>