Ruhr-Universität Bochum, Geographisches Institut
Modul: Programmierung WiSe 2006/07
Programmierung Game of Life
Game of Life mit Delphi 5.0
von
Stefan Blanaru
1. Programmidee
2. Lösungsvorschlag
3. Quelltextdokumentation
Anhang: Programmcode
1. Programmidee
Die Idee des "Game of Life" gibt es schon lange. Life wurde vom Mathematiker John Conway 1970 erfunden. Die Grundidee ist, dass jede Zelle acht Nachbarn hat, d.h. es liegt eine in viele kleine Quadrate eingeteilte Fläche vor. Folgende Regeln sind definiert, die festlegen, wann eine Zelle lebendig wird, lebendig bleibt und stirbt:
- Hat eine tote Zelle genau 3 lebendige Nachbarn, wird sie in der nächsten Generation lebendig, andernfalls bleibt sie tot.
- Hat eine lebendige Zelle genau 2 oder genau 3 lebendige Nachbarn, bleibt sie lebendig, andernfalls stirbt sie, also bei 0, 1, 4, 5, 6, 7 oder 8 Nachbarn.
Game of Life ist also kein Spiel im herkömmlichen Sinn. Es gibt keine Spieler und somit keine Gewinner oder Verlierer. Lediglich eine Startsituation ist nötig, den Rest gestalten die Spielregeln.
2. Lösungsvorschlag
In einem Array (Spielfeld[x,y]) kann man jede Zelle als lebendig oder tot abspeichern, wobei man als tot den Wert „0“ und als lebendig den Wert „1“ definiert. Damit die nächste Generation angeschaut werden kann, ruft das Programm „Update Spielfeld“ auf. Daraufhin wird auf jede Zelle der „UpdateZelle“ - Algorithmus angewendet, dafür wird zuerst jede Zelle auf ihre toten und lebendigen Nachbarn überprüft, dies geschieht in der Funktion „ZaehleNachbarn“. In „UpdateZelle“ wird entschieden, ob eine Zelle in der nächsten Generation noch lebendig ist oder sterben wird. Der neue Zustand der Zelle x,y wird berechnet, das Spielfeld[x,y] wird über die Routinen "FuegeLWein" und "EntferneLW" aktualisiert. Jede Generation wird grafisch in einem TImage angezeigt. „ZeichneSpielfeld“ zeichnet das Spielfeld in das Image. In meinem "Game of Life" sind lebendige Zellen gelb und tote Zellen grau dargestellt. Im TMainMenu (MainMenu1) unter dem TMenuItem (Muster) hat der Benutzer jedoch noch die Möglichkeit andere Farmmuster auszuwählen. Um diesen Lösungsvorschlag zu realisieren, hat der Benutzer die Möglichkeit, Zellen auf lebendig bzw. tot zu schalten und sich dann die nächste Generation anzuschauen. Der Anwender hat die Möglichkeiten mit der Maus die Zelle anzuklicken. Wenn man auf eine Zelle klickt, wird der Status umgekehrt, d.h. eine lebendige Zelle wird auf „tot“ gesetzt und eine tote Zelle auf „lebendig“. Es gibt auch die Möglichkeit eine neue zufällige Verteilung zu generieren und auszugeben. Das kann durch ein onclick-Ereignis auf den Button btn_ZufallClick aufgerufen werden. Die Anzahl der Lebewesen (voreingestellt sind 500, das kann der Anwender aber verändern) wird aus dem TEdit (edt_anzahl) eingelesen und an die Prozedur „InitSpielfeld“ übergeben. Diese löscht zunächst das Spielfeld (ruft LoescheSpieldfeld auf) und verteilt die Lebewesen zufällig über FuegeLW auf das Spielfeld.
Eine fortlaufende Generationsfolge kann man sich anzeigen lassen, indem man auf den Spiel starten - Button (btn_start2) klickt. Dadurch wird der Timer aktiviert. Durch das Betätigen des Spiel anhalten - Buttons (btn_stop2) wird das Spiel bzw. der Timer angehalten. Die Geschwindigkeit des Timers kann durch die drei RadioButtons (rbtnschnell, rbtnnormal, rbtnlangsam) verändert werden. Es besteht auch die Möglichkeit jeweils nur eine Generation weiter zu berechnen. Das passiert bei jedem Klick auf den nächste Generation - Button (btn_start). Um sich einfacher im Anzeigefenster des Spielfeldes zurechtzufinden, wird die Mausposition durch ein Label angezeigt. Über den Menüpunkt Datei -> Beenden kann der Anwender das Programm verlassen. Durch den Menüpunkt Datei - > Neues Spiel bekommt der Anwender ein leeres Spielfeld (nur tote Zellen), darauf kann er Zelle anklicken und „lebendig“ machen und sich eine zufällige Verteilung generieren lassen (s.o.).
3. Quelltextdokumentation
[...]
Arbeit zitieren:
2007, Programmierung Game of Life, München, GRIN Verlag GmbH
Dieser Text kann über folgende URL aufgerufen und zitiert werden:
Einbetten
DOI
Die katholische Kirche und Freimaurerei im 20. Jahrhundert
Eine kritische Bilanz
Geschichte Europa - and. Länder - Neueste Geschichte, Europäische Einigung
Seminararbeit, 23 Seiten
Friedrich Nietzsche - seine Position zur Organisation der Gesellschaft...
Germanistik - Neuere Deutsche Literatur
Hausarbeit, 19 Seiten
Der Begriff des Krieges in Thomas Hobbes "Leviathan" und Car...
Oder Kriegszustand bei Thomas ...
Seminararbeit, 42 Seiten
Kapitalismus als Religionsersatz - eine kritische Gesellschaftsanalyse...
Unterrichtsentwurf, 44 Seiten
Taktik und Taktiktraining im Fußball
Aufbau, Organisation, Spielfor...
Sport - Bewegungs- und Trainingslehre
Bachelorarbeit, 40 Seiten
Erfahrungen der Militär- und K...
Soziologie - Krieg und Frieden, Militär
Wissenschaftliche Studie, 11 Seiten
Zu J.-P. Vernants "Die Entstehung des griechischen Denkens"
Politik - Politische Theorie und Ideengeschichte
Rezension / Literaturbericht, 4 Seiten
Anonym hat den Text Programmierung Game of Life veröffentlicht
Amorous Life: John Cowper Powys and the Manifestation of Affectivity
Harald William Fawkner, H. W. Fawkner
0 Kommentare