Atölye › Conway'in Hayat Oyunu › 8/32. adım
Hayat Oyunu'nun kuralları tek bir sayıya bakar: bir hücrenin 8 komşusundan (sağ, sol, üst, alt ve dört çapraz) kaçı canlı? Bir satranç tahtasında şahın gidebileceği 8 kare gibi.
Bu adımda o sayıyı bulan bir fonksiyon yazıyoruz. Ekran değişmeyecek; sayıyı bir sonraki adımda kullanacağız.
```js
// Live neighbours among the 8 around (r, c), skipping those off the board.
function countNeighbors(r, c) {
let count = 0
for (let dr = -1; dr <= 1; dr++) {
for (let dc = -1; dc <= 1; dc++) {
if (dr === 0 && dc === 0) continue
const nr = r + dr
const nc = c + dc
if (nr >= 0 && nr < ROWS && nc >= 0 && nc < COLS) count += grid[nr][nc]
}
}
return count
}
```function countNeighbors(r, c) → parantez içindeki r ve c parametre: fonksiyonu çağırırken verdiğin
satır ve sütun. countNeighbors(10, 10) dersen içeride r 10, c 10 olur.let count = 0 → bir sayaç. count += grid[nr][nc] → "sayaca o hücreyi ekle". Hücre 1 ya da 0
olduğu için canlıysa 1 artar, ölüyse değişmez.dr ve dc'yi -1, 0, 1 yapar (<= "küçük ya da eşit"). dr bir üst / aynı / bir alt satır,
dc bir sol / aynı / bir sağ sütun: 3 × 3 = 9 yer.if (dr === 0 && dc === 0) continue → ortadaki yer hücrenin kendisi; onu saymayız. === "eşit mi?" diye sorar,
&& "ve" demektir. continue → "bu turu atla, sıradakine geç".const nr = r + dr ve const nc = c + dc → komşunun satırı ve sütunu.if (nr >= 0 && nr < ROWS && nc >= 0 && nc < COLS) → komşu tahtanın içindeyse say. Kenardaki bir hücrenin
bazı komşuları tahtanın dışına düşer; grid[-1] diye bir satır yok.return count → fonksiyon işi bitince bu sayıyı geri verir.reset fonksiyonunun kapanan }'sinin altında bir boş satır bırak ve yorum satırıyla birlikte countNeighbors'ı yaz.
Çalıştır: ekran değişmez, kontroller yeşil olmalı.
Beceriler: Döngüler, Fonksiyonlar
← Rastgele bir çorba Dört kural →