Atölye › Conway'in Hayat Oyunu › 9/32. adım
Ş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
}
```const next = emptyGrid() → bir sonraki nesil için boş bir ızgara.const n = countNeighbors(r, c) → o hücrenin canlı komşu sayısı.next[r][c] = n === 3 || (n === 2 && grid[r][c] === 1) ? 1 : 0 → dört kural tek satırda:n === 3 → 3 komşu varsa, hücre ölü de olsa canlı da olsa, gelecek nesilde canlı.|| "ya da" demektir.(n === 2 && grid[r][c] === 1) → 2 komşusu var ve şu an canlıysa yaşamaya devam eder.0: ölür ya da ölü kalır.grid'den, yazmayı hep next'e yapıyoruz.grid = next → döngüler bitince yeni nesil dünyanın kendisi olur.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
← Komşuları say Tekrar tekrar çiz →