Wator
ist eine Simulation eines Beute-Räuber-Ökosystems mit ein paar simplen Regeln. Erfunden von Alexander K. Dewdney1)
und David Wiseman2), wurde Wator in der Dezember-Ausgabe 1984
des Magazins Scientific American vorgestellt und bald darauf in der Rubrik Computer-Kurzweil
des deutschen Ablegers Spektrum der Wissenschaft.
Man stelle sich einen Wasserplaneten vor, dessen komplette,
von flachem Wasser bedeckte Oberfläche als Rechteck dargestellt wird, bei dem linker und rechter Rand aneinander anschließen wie auch oberer und unterer
ähnlich wie bei einem Torus3). (Man nennt das torodial
. Der Begriff Wator leitet sich von Water + Torus ab.)
Auf (bzw. in?) der flachen Oberfläche schwimmen Fische und Haie. (Ich vermute, auf diesem Planeten gelten Haie nicht als Fische.)
Die Fische
leben ohne Nahrungsknappheit von angenommen unbegrenztem Planktonvorkommen o.ä., die
Haie leben von den Fischen. Haie und Fische
bewegen sich pro Spielzug bzw. Zeitschritt jeweils zufällig auf ein direktes Nachbarfeld, sofern eines frei ist.
Haie können auch auf ein von einem Fisch besetztes Feld schwimmen; dann ist es um den armen Fisch allerdings geschehen.
Als benachbart gelten nur die vier Felder, die mit dem Zentralfeld eine Kante gemeinsam haben, also rechts, links, oben und unten.
Es gelten außerdem folgende Regeln:
Fische
gebären nach einer gewissen Zeit, der Brutzeitspanne4) (original Breed Time
), einen Nachkommen auf einem freien Nachbarfeld.
Haie fressen Fische auf angrenzenden Feldern. (Ich weiß nicht, ob sie nach originalen Regeln nur einen oder alle in der Umgebung verschlingen;
man kann es hier optional einstellen. Wenn sie sich nur auf einen stürzen, nehmen sie (in meiner Implementation) auch dessen Platz ein.
(Nachtrag: in der englischen Wikipedia steht es genauer: sie essen den Fisch, wenn sie (wohl zufällig?) auf ihn stoßen. Das ist noch weniger
als meine Version, in der der Hai jeden Fisch findet, der neben ihm schwimmt. So doof sind sie nun auch nicht, diese Haie. Leider.
Gut, ich rüste die Option des stumpfsinnigen Hais also noch nach; aber man muß sie explizit wählen.)
Für Tod und Geburt der Haie gibt es laut Wikipedia (deutsch, englisch) zwei unterschiedliche Modelle:
Modell 1
- Ein Hai stirbt, wenn er für eine bestimmte Anzahl Spielzüge, von mir Hungerzeitspanne genannt (Shark Starve Time
), keinen Fisch frißt.
- Er gebiert wie auch die Fische nach einer gewissen Brutzeitspanne (Shark Breed Time
) einen Nachkommen.
Modell 2. Dieses geht vom Konzept der Energiepunkte
aus, von denen Haie und übrige Fische jeweils einen initialen Wert erhalten.
- Frißt der Hai in einem Zeitschritt (chronon
) keinen Fisch, verliert er einen Punkt. Geht ihm die Energie aus, verendet er.
Wenn er jedoch einen Fisch findet und frißt, wird seine Energie um den (wohl gleichbleibenden) Energiewert des Fisches erhöht.
- Er erzeugt neben sich einen Nachkommen, wenn seine Energie einen gewissen Wert erreicht hat (Breed Energie
). Seine Energie geht dann zur
Hälfte auf den Nachkommen über.
Wählen Sie rechts die gewünschten Einstellungen, klicken Sie auf Start, um das Spielfeld zu erzeugen. Setzen Sie dann den Haken bei Animation und klicken auf Step. Ein Ändern der Zeitspannen, der Energiewerte und des Fischfreßmodus' ist während der laufenden Animation möglich, nicht aber ein Wechsel des Modells. Dafür muß neugestartet werden, was beim Umschalten des Modells automatisch erfolgt. Statt der Spielfeldgröße legen Sie am besten die Pixelgröße eines Feldes fest. Die Spielfelddimension wird nämlich ausgehend von der Pixelgröße automatisch an das Graphikfenster angepaßt, und zwar in Ruhe an die aktuelle Größe des Graphikfensters (und das Spielfeld wird neu initialisiert), bei laufender Animation aber wird das Graphikfenster an sich verkleinert. Das liefert eine praktische Möglichkeit, die Statistik und die Simulation gleichzeitig zu sehen. Eine andere Möglichkeit dafür ist: Graphikfenster immer oben links