Atölye › Mayın Tarlası › 9/26. adım
Hücre açmanın kurallarını reveal (aç, göster) fonksiyonuna yazacağız. Hücreye yeni bir bilgi: revealed (açıldı mı).
Oyunun aşamasını da bir değişkende tutacağız: state. İlk tıklamadan önce 'ready' (hazır); ilk açılışta mayınlar
o hücrenin çevresi hariç yerleşir ve durum 'playing' (oynanıyor) olur.
```js
let state // 'ready' (before the first click), 'playing', 'won' or 'lost'
function newGame() {
grid = Array.from({ length: SIZE }, (_, row) =>
Array.from({ length: SIZE }, (_, col) => ({ row, col, mine: false, count: 0, revealed: false })),
)
state = 'ready'
}
function reveal(start) {
if (start.revealed) return
if (state === 'ready') {
placeMines(start)
state = 'playing'
}
start.revealed = true
}
```revealed: false → her hücre kapalı başlar.let state → oyunun aşaması; newGame içinde state = 'ready'.if (start.revealed) return → zaten açıksa hiçbir şey yapma.if (state === 'ready') { ... } → bu ilk açılışsa: mayınları bu hücre güvende kalacak şekilde yerleştir ve
oyunu başlat. Sonraki açılışlarda state artık 'playing' olduğu için mayınlar bir daha yerleşmez.start.revealed = true → hücreyi aç.newGame içindeki hücre nesnesine revealed: false ekle; fonksiyonun sonuna () satırının altına)
state = 'ready' yaz.let grid satırının altına yorumuyla birlikte let state satırını yaz.placeMines fonksiyonunun altına bir boş satır bırakıp reveal fonksiyonunu yaz.Beceriler: Oyun durumları
← Çevredeki mayınları say Açık hücre farklı görünür →