Atölye › Amiral Battı › 5/35. adım
Oyunun bilgilerini tutmak için iki küçük yardımcı yazıyoruz:
tablo[2][5] → 2. satırın 5. karesi (ikisi de 0'dan sayılır). Kareleri hep (satır, sütun), yani (r, c) diye
yazacağız. grid(value) böyle bir tablo yapar; her karesi value olur.[[2, 3], [2, 4], [2, 5]]: 2. satırda yan yana üç kare.
shipCells bu listeyi yapar.Ekranda bir şey değişmeyecek.
```js
const grid = (value) => Array.from({ length: N }, () => Array(N).fill(value))
const shipCells = (r, c, length, down) => Array.from({ length }, (_, i) => (down ? [r + i, c] : [r, c + i]))
```const grid = (value) => ... → bir ok fonksiyonu (=> "şunu ver" diye okunur), bir sabite konmuş. Tek satırlık
ok fonksiyonu sonucunu kendiliğinden geri verir; return yazmaya gerek yok.Array(N).fill(value) → N elemanlı, hepsi value olan bir satır.Array.from({ length: N }, () => ...) → oktaki fonksiyonu N kez çalıştırıp sonuçlardan liste yapar: 10 ayrı
satır. (Tek bir satırı 10 kez koysaydık, birini değiştirmek hepsini değiştirirdi.)shipCells(r, c, length, down) → (r, c)'den başlayan, length uzunluğunda, aşağı (down) ya da sağa giden gemi.{ length } → { length: length } kısaltması. (_, i) → Array.from fonksiyona sıra numarasını da verir: i 0,
1, 2... Kullanmadığımız ilk değere _ deriz.down ? [r + i, c] : [r, c + i] → aşağı gidiyorsa satır artar, değilse sütun.İki satırı function drawSea( satırının üstüne yaz; altında bir boş satır kalsın. Çalıştır: ekran değişmez,
kontroller yeşil olmalı.
Beceriler: Diziler ve nesneler, Fonksiyonlar
← Tekrar tekrar çiz Rastgele bir filo →