Conway’in Hayat Oyunu

Conway’in hayat oyunu‘nu oynamak için basit bir javascript programı yazdım. Oyun, canlı ve cansız hücrelerden oluşan bir ızgara ve hücrelerde ölüm ve doğumu tanımlayan bir dizi kuraldan oluşuyor. Başlangıç durumu tanımlandıktan sonra oyun, daha doğrusu simülasyon, başka etkileşim olmadan bu kurallar doğrultusunda işlemeye başlıyor.

Oyun aslında sonsuz büyüklükte bir ızgara için tanımlanmış ama ben programda 20×20 büyüklüğünde ızgara kullandım ve ızgaranın dışındaki bölgede sadece ölü hücreler varmış gibi hesap yaptım. Programda canlı hücreler içi dolu siyah kareler, ölü hücreler de içi boş beyaz kareler şeklinde gösteriliyor.

Standart kurallara göre bir canlı hücrenin çevresinde eğer bir ya da daha az canlı hücre varsa o hücre ölüyor (aşırı yalnızlık). Eğer dört veya daha fazla canlı hücre varsa yine ölüyor (aşırı kalabalık). Eğer iki ya da üç canlı hücre varsa o zaman hücre canlı kalıyor. Ölü bir hücrenin etrafında eğer tam üç canlı hücre varsa o hücre canlanıyor (üreme). Bu kurallardaki sayılar programdaki bazı ayarlarla değiştirilebiliyor. Bu ayarların açıklamaları ayrıca program sayfasında bulunmaktadır.

Örnekler:

Hücrenin ölmesi:

İkinci sıra ve ikinci sütunda görülen canlı hücrenin çevresindeki sekiz hücre de ölü, yani doğrudan komşuluğundaki canlı hücre sayısı aşırı yalnızlıktan ölme sınırı olan birden az. Bu nedenle bir sonraki nesilde bu hücre de ölecektir.

single          →       empty

Hücrenin canlı kalması:

Aşağıdaki dört canlı hücrenin her birinin üç tane canlı komşusu var. Aşırı yalnızlık sınırından fazla aşırı kalabalık sınırından da daha az canlı komşu olduğundan bu hücreler bir sonraki nesilde yine canlı kalacaktır.

square       →       square

Hücrenin doğumu:

Aşağıdaki üç canlı hücrenin her birinin iki adet canlı komşusu var. Bu üç hücre de bir sonraki nesilde canlı kalacaktır. Bu üçlü grubun sol altındaki ölü hücrenin ise üç canlı komşusu var. Dolayısıyla bu hücre bir sonraki nesilde canlanacaktır. Diğer bütün ölü hücrelerin en fazla iki canlı komşusu olduğundan bu hücrelerde canlanma doğum olmayacaktır.

birth        →      square

Hepsi bir arada:

Ortadaki canlı hücrenin iki canlı komşusu var. Bu yüzden bu hücre bir sonraki nesilde canlı kalacak. En alttaki ve en üstteki canlı hücrelerin ise yalnızca bir canlı komşusu var. Dolayısıyla bu hücreler aşırı yalnızlıktan bir sonraki nesilde ölecek. Ortadaki canlı hücrenin solundaki ve sağındaki ölü hücrelerin ise üçer adet canlı komşusu bulunduğundan bu hücreler bir sonraki nesilde canlanacak, diğer bütün ölü hücreler ise ölü kalacak, çünkü hepsinin de en fazla iki tane canlı komşusu var. Bu yeni nesil de aynı mantıkla değişip bir sonraki nesilde ilk nesle dönüşecek.

vbar      →      hbar         →      vbar

 

Bu bağlantı üzerinden oyunu kendiniz de deneyebilirsiniz. Program javascript ile yazılmıştır ve kaynak kodu tarayıcı yardımıyla alınabilir.

yilmazaksoy.com/apps/GameOfLife.html

Bir cevap yazın