Atölye › Conway'in Hayat Oyunu › 9/32. adım

Dört kural

Ne yapıyoruz

Şimdi kurallar. Her nesilde (generation) her hücre komşularını sayar ve:

Önemli bir ayrıntı: bütün hücreler aynı anda değişmeli. Yeni değerleri hemen grid'e yazsaydık, sonra bakılan hücreler zaten değişmiş komşuları sayardı. Bu yüzden eski grid'den okuyup yeni bir ızgaraya (next) yazıyoruz, en sonda da ikisini değiştiriyoruz. Buna çift tamponlama (double buffering) denir: sınıfta herkesin notunu önce kâğıda yazıp sonra tahtaya birden asmak gibi.

```js
// Every cell changes at the same moment, so the next generation is built in a new grid.
function step() {
  const next = emptyGrid()
  for (let r = 0; r < ROWS; r++) {
    for (let c = 0; c < COLS; c++) {
      const n = countNeighbors(r, c)
      // A live cell survives with 2 or 3 neighbours; a dead cell comes alive with exactly 3.
      next[r][c] = n === 3 || (n === 2 && grid[r][c] === 1) ? 1 : 0
    }
  }
  grid = next
}
```

Ne işe yarıyor

Sıra sende

countNeighbors fonksiyonunun kapanan }'sinin altında bir boş satır bırak ve iki yorum satırıyla birlikte step fonksiyonunu yaz. Çalıştır.

Beceriler: Oyun durumları, Döngüler

Tüm adımlar

  1. Oyun tahtası
  2. Izgarayı ölç
  3. Tek bir canlı hücre
  4. Çizen bir fonksiyon
  5. Hafızadaki dünya
  6. Her canlı hücreyi çiz
  7. Rastgele bir çorba
  8. Komşuları say
  9. Dört kural
  10. Tekrar tekrar çiz
  11. N ile sonraki nesil
  12. Nesilleri say
  13. Nesli göster
  14. Kenarsız bir dünya
  15. Canlıları say
  16. Birkaç karede bir nesil
  17. Yaşasın
  18. Çalışıyor mu?
  19. Düğmeler için tek bir yer
  20. Boşlukla oynat, N ile adım at
  21. Temizle ve karıştır
  22. İşaretçi nerede?
  23. Hangi hücre?
  24. Hücreye tıkla
  25. Boya mı sil mi?
  26. Sürükleyerek boya
  27. Metinden desenler
  28. Planör topu
  29. Topu ateşle
  30. Ekranda düğmeler
  31. Düğmelere dokun
  32. Kendin yap: duran dünya