Atölye › Mayın Tarlası › 1/26. adım
Sayıları ipucu olarak okuyup hiçbir mayına dokunmadan alanı temizle. Komşu sayma, güvenli ilk tıklama, yığınla taşma dolgusu, bayraklar ve zamanlayıcı.
Mayın Tarlası: 9×9'luk bir tarlada 10 mayın gizli. Mayına basmadan bütün güvenli hücreleri açarsın; açılan hücrelerdeki sayılar çevrede kaç mayın olduğunu söyler.
Bir hücre birçok şeyi aynı anda hatırlamalı: altında mayın var mı, açıldı mı, bayrak var mı... Bu yüzden her hücre bir nesne olacak, tahta da nesnelerden oluşan iki boyutlu bir dizi: 9 satır, her satırda 9 hücre. Önce sadece yerini bilen hücreler kuruyoruz; ekranda henüz bir şey yok.
```js
const SIZE = 9
let grid
function newGame() {
grid = Array.from({ length: SIZE }, (_, row) =>
Array.from({ length: SIZE }, (_, col) => ({ row, col })),
)
}
newGame()
```const SIZE = 9 → bir kenardaki hücre sayısı. let grid → tahta; her yeni oyunda yeniden kurulacağı için let.Array.from({ length: SIZE }, (_, row) => ...) → 9 elemanlı bir dizi yapar; her elemanı virgülden sonraki
fonksiyon üretir. Array.from bu fonksiyona her eleman için sırayla sıra numarasını (0, 1, ... 8) ikinci girdi
olarak verir; biz ona row diyoruz._ → kullanmadığımız ilk girdiye verilen yaygın bir ad (boş yerin değeri; işimize yaramıyor).Array.from aynısını sütunlar için yapar ve her hücre için ({ row, col }) üretir: { row: row, col: col }
nesnesinin kısa yazılışı. Nesnenin etrafındaki normal parantez şart: yoksa { } fonksiyon gövdesi sanılır.grid[3][7] → 3. satırın 7. hücresi: { row: 3, col: 7 }. Her hücre nerede olduğunu kendisi bilir;
fonksiyonlara bir hücre verdiğimizde yerini ayrıca söylememiz gerekmeyecek.newGame() → tahtayı kur.Kodu editördeki üç yorum satırının altına yaz. Array.from satırlarındaki parantezlere ve sondaki ),'e dikkat.
Çalıştır'a bas: ekran değişmez, kontroller yeşil olmalı.
Beceriler: Diziler ve nesneler