Atölye › Amiral Battı › 1/35. adım

Amiral Battı: 10'a 10 bir deniz

Seninkini batırmadan önce düşman filosunu batır ve bilgisayara avlanmayı öğret. Asla örtüşmeyen rastgele filolar, iki taraf için tek bir ateş fonksiyonu, sıralar ve ölçebileceğin üç bilgisayar oyuncusu: rastgele (yaklaşık 95 atış), avla ve hedefle (yaklaşık 56) ve her olası gemi konumunun ısı haritası (yaklaşık 44).

Ne yapıyoruz

Amiral Battı 10×10 karelik bir denizde oynanır. İlk adımda düşmanın denizini çiziyoruz; ateş edeceğin yer burası. 100 lacivert kare, aralarında ince boşluklarla.

Kareleri tek tek yazmak yerine iki iç içe döngü kullanacağız: dıştaki satırları, içteki sütunları gezer.

```js
const canvas = document.getElementById('game')
const ctx = canvas.getContext('2d')

const N = 10
const BIG = 36 // cell size of the enemy's sea, where you shoot
const SEA = { x: 30, y: 50 }

ctx.fillStyle = '#0f172a'
ctx.fillRect(0, 0, canvas.width, canvas.height)

ctx.fillStyle = '#1e3a8a'
for (let r = 0; r < N; r++) {
  for (let c = 0; c < N; c++) {
    ctx.fillRect(SEA.x + c * BIG + 1, SEA.y + r * BIG + 1, BIG - 2, BIG - 2)
  }
}
```

Ne işe yarıyor

Sıra sende

Kodu editördeki üç yorum satırının altına yaz; boş satırları da aynen bırak. Çalıştır'a bas: üstte 10×10 lacivert bir deniz görmelisin.

Beceriler: Canvas üzerine çizim, Döngüler

Tüm adımlar

  1. 10'a 10 bir deniz
  2. Her deniz için bir fonksiyon
  3. Senin denizin
  4. Tekrar tekrar çiz
  5. Liste olarak ızgara ve gemi
  6. Rastgele bir filo
  7. İki filo
  8. Burada hangi gemi var?
  9. Bir kareye ateş et
  10. Atışları göster
  11. Senin atışın
  12. Dokun ve ateş et
  13. Bir mesaj satırı
  14. İsabet mi, ıska mı?
  15. Kendi filonu gör
  16. Gemi batırmak
  17. Batık gemide koyu isabetler
  18. Batık gemilerin çerçevesi
  19. En az atışla kazan
  20. Onların atışlarının kaydı
  21. Sırayla
  22. Bilgisayar karşılık veriyor
  23. Kaybetmek de var
  24. Isı haritası
  25. En sıcak kareye ateş
  26. İsabetin çevresini ara
  27. Isı haritasını gör
  28. Isı için H
  29. Sonunda gemilerini göster
  30. Klavye imleci
  31. Oklarla gez
  32. Enter ile ateş, yeniden oyna
  33. En iyi oyunun
  34. Yan panel
  35. Kendin yap: gemiler ayrı