Conways Spiel des Lebens mit Python 3 und Tk.
Das Spiel des Lebens wird in Generationen auf einem Gitter gespielt. Auf einem Gitterplatz kann sich eine Zelle befinden oder auch nicht. Die Anfangspopulation besteht aus einigen Zellen, die bereits zu beginn des Spieles existieren. In jeder neuen Generation (Runde) überleben Zellen, sterben Zellen und werden neue Zellen geboren in Abhängigkeit von den Zellen der vorherigen Generation. Um zu entscheiden, ob ein Gitterplatz in der nächsten Generation von einer Zelle belegt ist oder nicht, ist der aktuelle Zustand dieses Gitterplatzes und die acht umligenden Zellen (die Nachbarschaft) dieses Platzes wichtig.
- Befindet sich auf dem Gitterplatz keine Zelle, so wird dort eine neue Zelle geboren, wenn sich in der Nachbarschaft genau drei Zellen befinden.
- Befindet sich auf dem Gitterplatz eine Zelle, so überlebt diese, wenn sich in ihrer Nachbarschaft zwei oder drei Zellen befinden. Sonst stirbt die Zelle an Vereinsamung oder Überbevölkerung ab.
Diese Software entstand im Rahmen des Informatik Summer Camps 2013 an der
Universität zu Lübeck. Die Klasse GameOfLife
war vorgegeben, die Funktion
step
ist daraus ausgelagert und modelliert den Schritt von einer Generation
zur nächsten. Der Code dieser Funktion zwischen den Kommentarzeilen
Beginn/Ende der Lösung
wurde von den Teilnehmer selbst erarbeitet.
Python ist auf vielen Systemen bereits installiert, sodass die Software über
python3 gameoflife.py
gestartet werden kann. Bei der Verwendung in interaktiven Systemen wie IDLE muss
die folgende Zeile am Ende der Datei gameoflife.py
auskommentiert werden:
app.run()
In diesem Fall übernehmen diese Systeme die Ausführung der Mainloop.
Die Bedienung kann über das Menü oder die im Menü angegebenen Tastaturbefehle erfolgen.
Solange das automatische Weiterschalten der Generationen deaktiviert ist, können einzelnen Zellen durch Klicken mit der Maus hinzugefügt bzw. entfernt werden.
Setzt wieder die Anfangspopulation auf das Gitter. Das ist die Population, die zuletzt geladen oder gespeichert wurde.
Lädt eine Population aus einer Datei im Plaintext-Dateiformat und setzt diese als aktuelle Population.
Speichert die aktuelle Population in einer Datei im Plaintext-Dateiformat.
Öffnet einen Konfigurationsdialog, in dem die Größe des Gitters, die Größe einer Zelle in der Darstellung und die Verzögerung für das automatische Weiterschalten der Generationen eingestellt werden kann.
Beendet das Programm.
Wechselt in die nächste Generation.
Aktiviert oder deaktiviert das automatische Weiterschalten der Generationen.
Das Plaintext-Dateiformat orientiert sich an dem im LifeWiki unter
Plaintext
beschriebenen Format, dass auch im LifeWiki selbst verwendet wird.
Zeilen, die mit einem Ausrufezeichen (!
) beginnen sind Kommentarzeilen
und werden ignoriert. Jede andere Zeile der Datei entspricht einer Zeile
des Gitters. Ein Gitterplatzt ohne Zelle wird durch einen Punkt (.
)
und ein Gitterplatzt mit Zelle durch den Großbuchstaben O (O
) dargestellt.
Plätze ohne Zelle am Ende des Zeile müssen nicht angegeben werden. Die
Dimension des Gitters ergibt sich aus der Anzahl Zeilen und der längsten
Zeile in der Datei.
Ein Rand bestehend aus zwei Zellen zu jeder Seite wird nicht gespeichert und nicht geladen. Dieser Rand sollte in Anfangspopulationen immer frei von Zellen bleiben, damit Approximation an ein unendlich großes Gitter durch den Rand nicht zu sehr verfälscht wird.
This software is released under the MIT License. Some of the configurations in the data folder are taken from the LifeWiki. These are licensed as described on the wiki pages linked in the header section of these files.