Atölye › Mayın Tarlası › 5/26. adım
Mayın Tarlası'ndaki hemen her soru bir hücrenin komşularıyla ilgili: çevresindeki en fazla 8 hücre. Sayılar komşulardaki mayınları sayar; boş bir alan komşulara doğru açılır.
Komşuları bulmak için satıra ve sütuna −1, 0 ya da +1 ekleriz: 3 × 3 = 9 ihtimal. Birini (0, 0, yani hücrenin kendisi) atlarız; tahtanın dışına taşanları da.
```js
// The up to 8 cells around a cell, skipping the ones that would be off the board.
function neighbors(cell) {
const list = []
for (let dr = -1; dr <= 1; dr++) {
for (let dc = -1; dc <= 1; dc++) {
if (dr === 0 && dc === 0) continue
const row = cell.row + dr
const col = cell.col + dc
if (row >= 0 && row < SIZE && col >= 0 && col < SIZE) list.push(grid[row][col])
}
}
return list
}
```for (let dr = -1; dr <= 1; dr++) → sayarak dönen döngü: dr (satır farkı) −1'den başlar, 1'e kadar (<= "küçük
ya da eşit"), her turda 1 artar (++). Üç tur: −1, 0, 1.dc (sütun farkı) için yapar: toplam 9 kombinasyon.if (dr === 0 && dc === 0) continue → iki fark da 0'sa bu hücrenin kendisi. continue → "bu turu bırak, bir
sonraki tura geç".row >= 0 && row < SIZE && col >= 0 && col < SIZE → komşu tahtanın içinde mi? Bu kontrol sayesinde köşedeki
hücrenin 3, kenardakinin 5 komşusu olur. Unutulursa grid[-1] okunur, undefined gelir ve program çöker.list.push(grid[row][col]) → komşuyu listeye ekle. return list → listeyi geri ver.newGame fonksiyonunun kapanan }'sinin altına bir boş satır bırakıp yorum satırını ve neighbors fonksiyonunu yaz.
Çalıştır. Ekran değişmez; kontroller komşuları sayıyor.
Beceriler: Döngüler, Diziler ve nesneler
← Her karede çiz Mayınlar, ama ilk tıklamanın altına değil →