"Warhamster" Documentation.html v1.19



Einleitung
Grundphilosophie
Hexfield_Constants.java
Hexpoint.java
HexfieldHash.java
Warhamster.java
Hexfield.java






Einleitung

Vielen Dank, dass Sie sich fuer unseren Hamster interessieren.
Bitte lesen Sie diese Dokumentation sorgfaeltig durch, um sich mit der Funktionsweise des Hamsters "Warhamster" vertraut zu machen
und einen stoerungsfreien Betrieb ueber viele Jahre hinweg zu sichern.

Besondere Anmerkung:
Die mit diesem Hamster mitgelieferte Dokumentation darf nicht mit
einem anderem Hamster verwendet werden.





Die Grundphilosophie des Hamsters

Der "Warhamster" zeichnet eine Karte, auf der die Felder den schnellsten Weg nach Hause weisen und einen Eigenwert besitzen.
Felder ohne Korn oder mit so wenig Korn, dass der Weg nach Hause sich nicht lohnen würde, sind neutral. Felder mit Korn oder unbetretene Felder werden bevorzugt.
"Warhamster" trifft seine Entscheidungen aufgrund des Zufalls, wobei aber der Wert der Felder die Wahrscheinlichkeitsverteilung der Ergebnisse beeinflusst.





Hexfield_Constants.java

Definiert notwendige Konstanten, wie zum Beispiel die Himmelsrichtungen oder die Default-Bewertungen einzelner Felder.
Die Himmelsrichtungen werden durch Integerwerte von 0 bis 6 repraesentiert, um mittels Zaehlschleifen eine (gerichtete) Drehung durchzufuehren.
"NULLVALUE" stellt den Wert eines nicht mit Korn belegten Feldes dar.
"CORNVALUE" stellt den Wert eines mit Korn belegten Feldes dar.
"WALLVALUE" stellt den Wert einer Mauer dar.





Hexpoint.java

Eine Erweiterung von "java.awt.Point" mit zusaetzlichen Konstruktoren, die anhand einem Ursprungspunktes und einer Richtung die Koordinaten des Nachbarpunktes berechnen.





HexfieldHash.java

Eine Erweiterung von "Hashtables", worin Hexfields aufgenommen werden, welche durch deren Koordinaten (Points) indeziert sind.





Hexfield.java

Stellt den Konstruktor, um eine Karte des Feldes anzulegen und ueber dieser Operationen auszufuehren.
"Hexfield()" legt das Heimatfeld auf der Karte an.
"Hexfield(Hexfield Origin,byte Direction)" legt das Nachbarfeld in einer bestimmten Richtung an.
"public int distance(Hexfield End){" gibt den Abstand des Feldes zum Heimatfeld an.
"private byte invert(byte Direction)" gibt die entgegengesetzte Richtung zurueck.
"public Hexfield explore(Warhamster Soldier)" Holt und setzt die Werte des betretenen Feldes.
"private int setHomepath()" Setzt den kuerzesten Weg des Feldes zum Heimatfeld, indem es auf das Nachbarfeld zeigt, welches wiederum auf den kuerzesten Weg nach Hause zeigt.






Warhamster.java

Hier entscheidet der Hamster seine Schritte aufgrund der Wertigkeit der Felder und des Zufalls. Sollte er die Backen voll haben geht er nach Hause.




Was nicht in der docu vermerkt ist: der Hamster so wie er jetzt ist, laueft geradeaus, bis er kollidieren wuerde, geht dann in eine zufaellige richtung und laeuft wieder geradeaus. er nimmt alles mit was er kriegen kann und geht wenn voll den besten bekannten weg nach hause. er stopt, wenn er mit nach hauseweg 200 schritte machen wuerde ohne korn zu sammeln.