Az életjáték (angolul The game of life) John Horton Conway-től, a cambridge-i egyetem matematikusától származik. A játékot 1970 környékén mutatta meg barátjának, Martin Gardner-nek, aki 1970 októberében ismertette a témát a Scientific American-ben. Conway ezzel az ötletével vált ismertté a matematikusok világán kívül, játéka világszerte népszerűvé vált. Bizonyos becslések szerint a 70-es évek elején ezzel a játékkal rengeteg értékes gépidőt vesztegettek el, s így - a TIME becslése szerint - több millió dolláros anyagi kár merült fel a nagyszámítógépeket üzemeltető biztosítótársaságoknál és bankoknál.
De miről is van szó? Ez a játék nem olyan értelemben vett játék, mint ahogy mostanában szokás "játékról" beszélni (nem FPS, nem RTS, nem RPG stb.), általában nem is tudunk beavatkozni a folyamatába, de nagyon érdekes időtöltés a képernyőn figyelemmel kísérni a folyamatos változásokat.
A játék egy négyzethálós táblán játszható (akár egy "kockás" papíron is megpróbálhatjuk, de ez egy kissé nehézkes). A táblán található négyzeteket celláknak nevezzük, és e cellákba a játék kezdetén tetszőleges helyekre ún. sejteket helyezünk. Ebből a kiinduló állapotból a játék során újabb elrendeződések sorozata keletkezik.
Az egyes cellákban a következő állapotváltozások mehetnek végbe:
- Egy adott cella a következő elrendezésben is sejtet tartalmazhat, vagyis az adott sejt túlélte a változást.
- Egy adott cella a következő elrendezésben kiürül, vagyis a sejt elpusztul.
- Egy előző állapotban üres cellába sejt kerül a következő elrendezésben, vagyis új sejt születik.
Az állapotváltozások egyszerre mennek végbe a táblán, azaz nem fokozatosan (ez nagyon fontos!). A szabályok a következők:
- Túlélés: minden olyan sejt, amelynek két vagy három szomszédja van, életben marad, és a következő generáció változatlan tagja lesz.
- Elpusztulás: egy sejt elpusztul, ha a következő két állapot valamelyike jön létre a környezetében:
- négy vagy több szomszédja van : túlnépesedés
- egy vagy nulla szomszédja van : elszigetelődés
- Születés: minden olyan üres cellában, amelynek pontosan három sejt-szomszédja van, új sejt születik.
Ha ezt az algoritmust folyamatosan ismételjük, akkor kis idő elteltével nagyon érdekes elrendeződések alakulhatnak ki.
Érdekes kérdések merülnek fel a programmal kapcsolatban. Az első, hogy hogyan alakítsuk ki a kezdő elrendezést? A legegyszerűbb megoldás, ha a táblát véletlenszerűen töltjük fel. Akár kézzel is el lehet ezt végezni, aminek az az előnye, hogy bizonyos speciális kezdőállapotokból különleges új állapotokba kerülhet a program. A második kérdés, hogy hogyan kezeljük az életteret körbevevő keretet (ami nem látszik a képernyőn), ugyanis a tábla szélén lévő cellákat is módosítanunk kell valahogyan. Itt is választhatunk két egyszerű megoldást: a táblát körbevevő keret összes cellája tartalmazzon illetve ne tartalmazzon sejtet.
Az eredeti ötletet ki lehet egészíteni néhány újjal, hogy érdekesebb legyen a játék:
- tegyünk a táblára olyan mezőket is, amelyek nem sejtek, de soha nem is változhatnak (pl. fal, szikla stb.)
- indítsunk kettő vagy több populációt (pl. pirosakat és kékeket) egymás ellen a táblán
- változtassuk meg a szabályokat (pl. négy szomszéd esetén is szülessen új sejt; ebből is kijöhetnek furcsaságok)
- néha kerüljön a táblára a szabályoktól függetlenül egy-egy "mutáns" sejt (ez elég rendesen meg tudja kavarni a folyamatot)
- ha akarunk, mi is tehessünk a táblára egy-egy új sejtet, ahová éppen nekünk tetszik
Rengeteg megvalósítása létezik az életjátéknak. Különösen ajánlom mindenkinek a CellFighter Game című shareware programot, amely a CellFighter.com oldalról tölthető le. Egy saját megvalósítás a tumuslak.uw.hu/tdownload/life.zip címen található.
Felhasznált és ajánlott források:
- Csákány - Dr.Vajda: Játékok számítógéppel
- Csákány Béla: Diszkrét matematikai játékok
- Kovács Attila honlapja
- Conway´s Game of Life, Wikipedia
- John Horton Conway életrajza
- CellFighter.com
- generation 5
- www.bitstorm.org/gameoflife/
Utolsó kommentek