Der nicht ganz so glückliche kleine Hamster

Der nicht ganz so glückliche kleine Hamster besteht aus einer einzigen Klasse und drei Methoden. Der Hauptmethode "run" und den zwei Methoden "sammeln" und "ausspucken". Die Methode "sammeln" besteht aus zwei Methoden einer früheren Entwicklungsstufe des Hamsters - der frühen Methode "sammeln" und der Methode "weg-zurueck-routine", die aber aufgrund des Einbaus eines Stacks mit der Sammel-Methode zusammengelegt wurde.
 

1. Die Methode "run"

Das ist die Hauptmethode, in der die zwei anderen Methoden so oft in einer while-Schleife wiederholt werden, bis der boolsche Wert "ende" wahr wird.
(beachte auch Punkt 4. - Die Änderung zur Version 1.1)
 

2. Die Methode "sammeln"

2.a. Der Teil der alten Methode "sammeln"

In einer while-Schleife werden der Rundumblick, die Zufallsauswahl des Weges, der atHome-Test und die Kornaufnahme durchgeführt, bis der boolsche Wert "voll" wahr wird (bis der Hamster das Maximum an Körnern im Maul trägt).
Der Rundumblick  besteht daraus, daß der Hamster sich auf jeden Feld einmal im Kreis dreht und boolsche Werte für Wände und Korn an jeder Seite des seckseckigen Feldes festlegt. Zusätzlich dazu testet er noch, ob das Feld auf dem Korn liegt, nicht das Heimatfeld ist.
Diese boolschen Werte werden je für Korn und Wände in einem Array gespeichert. Die Größe eines Arrays wird festgelegt durch die Anzahl der Werte, die wahr (für Korn) oder bzw (für Wände) falsch sind.
Durch eine einfache Zufallsberechnung wird nun eine Stelle diese Arrays ermittelt und somit eine Möglichkeit den Weg fortzusetzen vorgegeben.

Beispiel: Der Hamster steht auf einem Feld mit drei Wänden und keinem angrenzenden Feld mit Korn. Durch den Rundumblick erkennt er drei Wände und setzt die boolschen Variablen für die drei anderen wandfreien Seiten des Feldes auf "wand=false". Die Variable für die möglichen Wege, mit der auch die Größe des Arrays festgelegt wird, wird auf drei gesetzt. Auf den drei Stellen dieses Arrays wird jetzt je eine der drei möglichen wandfreien Wege gesetzt. Durch die Zufallsauswahl wird eine Stelle diese Arrays ausgewählt. Diese Stelle steht dann für eine ausgewählte wandfreie Seite des aktuellen Feldes, wohin der Hamster seinen Weg fortsetzt.

Besonderheiten: Der Hamster läuft niemals ein Schritt vor, dreht sich um 180 Grad und läuft zurück, außer im Falle einer Sackgasse.
Die Auswahl eines Feldes mit Korn hat Vorrang vor der Ausahl eines Feldes ohne Korn.
 

In den modernen Labors wird der Hamster durch 
intensives Training auf den Wettbewerb vorbeitet

2.b. Der Teil der alten Methode "weg-zurueck-routine"

Hierbei bedient sich der Hamster eines alten Tricks und zieht sozusagen einen roten Faden hinter sich durch das Labyrinth.

Hat der Hamster erstmal ein Feld per Zufall ausgewählt, bewegt er sich dorthin. Dabei wird in einem eigens dafür angelegten Stack dieser ausgewählte Weg gespeichert. Das wiederholt sich so oft, bis der Hamster die maximale Anzahl an Körnern in seinem Maul trägt. Nun muß er das Korn zurückbringen und läuft dabei seinen alten Weg umgekehrt zurück indem er die alten gewählten Wegmöglichkeiten aus dem Stack liest und umgekehrt wieder ausführt, bis er automatisch am Heimatfeld angekommen ist.

2.c. Der atHome Test und die Kornaufnahme

Der Hamster prüft auf jeden Feld, ob er zu Hause ist. Ist er zu Hause und liegt dort schon etwas und er kommt mit leeren Maul zurück, hört er auf um endloses Herumirren in einem möglichen leeren Labyrinth zu vermeiden.
Die Kornaufnahme besteht daraus, daß er auf jeden Feld versucht alles Korn, was er tragen kann, aufzunehmen.
 

3. Die Methode "ausspucken"

Diese Methode wurde komplett aus dem "LeftHand" Hamster übernommen. Hat der Hamster das Heimatfeld erreicht, spuckt er das gesammelte Korn aus.
 

Die freundliche Arbeitsumgebung 
erlaubt dem Programmierer, seine 
vollständige Kreativität auszuschöpfen

4. Die Änderung zur Version 1.1

Ausgiebige Tests auf dem mitgelieferten Labyrinth haben ergeben, das wenn die "run" Methode (oder der Inhalt der "run" Methode) sechs mal abläuft, eine optimale Punktzahl erreicht wird. Diese Zahl 6 ergibt sich aus dem Durchschnitt zwischen der Anzahl der Läufe, die der Hamster braucht, bis seine Punktzahl durch das Herumirren durch ein mögliches leeres Labyrinth rückläufig wird.
 

5. Schlußwort

Wenn man sich den Programmcode ansieht, wird man feststellen, daß ich nicht viel von Objektorientiertheit halte. Als alter BASIC-Programmierer, der sich auch gern mal für ASSEMBLER interessiert, kann ich natürlich überhaupt nicht verstehen, warum es in Java meinen Lieblingbefehl GOTO nicht mehr gibt. Hätte ich den gehabt, hätte ich bestimmt den Programmcode viel schöner gestalten können. Am besten noch ohne diese überflüssigen Kommentare...
 

Der nicht ganz so glückliche kleine Hamster
Programmierung: Andreas Kleinschmidt
email Andreas_Kleinschmidt@web.de
 

Version 1.0
erster komplett lauffähiger Hamster

Version 1.1
Alles, was in "run" steht, läuft jetzt 6 mal

Version 1.2
für spätere Änderungen


Danke an
www.deathrock.com
Siouxsie & the Banshees
www.gothicradio.com
für die musikalische Unterstützung
 

Das Ganze kann natürlich nur so entstanden sein