next up previous contents
Nächste Seite: 7 Scheme Aufwärts: handbuch Vorherige Seite: 5.2 Mehrbenutzerfähigkeit   Inhalt


6 Englischsprachiger Hamster

Seit Version 2.4 des Hamster-Simulators ist der Hamster-Simulator in die englisch-sprachige Welt integriert worden. Das betrifft zunächst die Benutzungsoberfläche. Durch Einstellen der Property language auf den Wert en erscheinen alle Ausgaben in englischer Sprache.

Aber nicht nur die Oberfläche auch das Hamster-Modell selbst wurde angepasst. Bswp. versteht der Hamster ab sofort nicht mehr nur den Befehl vor();, sondern auch den Befehl move();, der dasselbe bewirkt: Der Hamster springt eine Kachel in Blickrichtung nach vorne.

Im Folgenden wird ein Überblick über die entsprechenden englischen Befehle bzw. Klassen des Hamster-Modells gegeben:

deutsch englisch
vor move
linksUm turnLeft
nimm pickGrain
gib putGrain
vornFrei frontIsClear
kornDa grainAvailable
maulLeer mouthEmpty
liesZahl readNumber
liesZeichenkette readString
schreib write
init init
getReihe getRow
getSpalte getColumn
getBlickrichtung getDirection
getStandardHamster getDefaultHamster
getAnzahlKoerner getNumberOfGrains
getAnzahlHamster getNumberOfHamsters
Territorium Territory
HamsterInitialisierungsException HamsterInitializationException
HamsterNichtInitialisiertException HamsterNotInitializedException
KachelLeerException TileEmptyException
MauerDaException WallInFrontException
MaulLeerException MouthEmptyException

Ein imperatives englisches Hamster-Programm, bei dem der Hamster alle vor ihm liegenden Körner einsammeln soll, sieht damit folgendermaßen aus:

void main() {
  pickAll();
  while (frontIsClear()) {
    move();
    pickAll();
  }
}

void pickAll() {
  while (grainAvailable()) 
    pickGrain();
}

Das folgende Programm skizziert ein objektorientiertes englisches Hamster-Programm:

class MyHamster extends Hamster {
  MyHamster(Hamster h) {
    super(h.getRow(), h.getColumn(), 
          h.getDirection(), h.getNumberOfGrains());
  }
  
  void turnRight() {
    this.turnLeft();
    this.turnLeft();
    this.turnLeft();
  }
}

void main() {
   MyHamster paul = new MyHamster(Hamster.getDefaultHamster());
   try {
     while (true) {
       paul.move();
     }
   } catch (WallInFrontException exc) {
   }
   paul.turnRight();
   paul.write("Number of Hamsters: " + 
              Territory.getNumberOfHamsters());
}

Prinzipiell kann man übrigens auch die deutschen und englischen Befehle mischen.


next up previous contents
Nächste Seite: 7 Scheme Aufwärts: handbuch Vorherige Seite: 5.2 Mehrbenutzerfähigkeit   Inhalt
Ditrich Boles 2008-03-17