Atölye › Amiral Battı › 22/35. adım
Bilgisayar oynuyor: sayacı bitince senin denizinde daha önce ateş etmediği rastgele bir kare seçer, ateş eder ve sırayı sana geri verir. Şimdilik akılsız, rastgele atıyor; birkaç adım sonra onu akıllı yapacağız.
Sayacı her karede azaltacak bir update fonksiyonu da gerekiyor; döngü onu çağıracak.
```js
function computerShoots() {
let r
let c
do {
r = Math.floor(Math.random() * N)
c = Math.floor(Math.random() * N)
} while (theirShots[r][c])
const result = fire(myFleet, theirShots, r, c)
message = result === 'sunk' ? 'They sank your ship!' : 'Your turn: pick a square'
turn = 'you'
}
function update() {
if (state === 'playing' && turn === 'them' && --timer === 0) computerShoots()
}
update()
```do { ... } while (theirShots[r][c]) → önce rastgele bir kare seç, sonra: o kareye zaten ateş edildiyse
tekrar seç. Boş bir kare bulunca döngü biter.fire(myFleet, theirShots, r, c) → senin kullandığın fire fonksiyonunun aynısı; bu sefer senin filona ve
onların kaydına.message = result === 'sunk' ? ... : ... → gemin battıysa haber ver, değilse sıranın sende olduğunu söyle.--timer === 0 → -- önce 1 azaltır, sonra karşılaştırır. 30 karede sıfıra iner ve bilgisayar ateş eder.update() döngüde draw()'dan önce: her karede önce durum güncellenir, sonra çizilir.playerShoots fonksiyonunun altına bir boş satır bırakıp computerShoots ve update fonksiyonlarını yaz.loop içinde draw() satırının üstüne update() yaz.Beceriler: Oyun döngüsü, Döngüler