Atölye › Scorched Earth Tarzı Topçu › 17/23. adım
Bir atış bir tankın canını 0'a indirince oyun biter: bilgisayarınki ise kazanırsın, seninki ise kaybedersin. Bir kutu bunu söylesin; Boşluk yeni tepelerle yeni bir oyun başlatsın.
```js
function endTurn() {
if (tanks[1].hp === 0) state = 'won'
else if (tanks[0].hp === 0) state = 'lost'
else {
turn = 1 - turn
state = 'aiming'
if (turn === 1) thinking = 60
}
}
if (state === 'won' || state === 'lost') reset()
else if (turn === 0) fire()
if (state === 'won' || state === 'lost') {
ctx.fillStyle = 'rgba(15, 23, 42, 0.8)'
ctx.fillRect(140, 110, 280, 80)
ctx.fillStyle = 'white'
ctx.textAlign = 'center'
ctx.font = 'bold 22px sans-serif'
ctx.fillText(state === 'won' ? 'You win!' : 'You lose', W / 2, 145)
ctx.font = '15px sans-serif'
ctx.fillText('Space or tap to play again', W / 2, 172)
}
```endTurn önce oyunun bitip bitmediğine bakar; kimse 0'da değilse (else { ... }) sıra geçer. Eski üç satır bu
bloğun içine girdi.'won' ya da 'lost' durumunda hiçbir şey uçmaz, nişan alınmaz, düşünülmez: oyun Boşluk'u bekler.reset() (yeni tepeler, dolu canlar), değilse sıra sendeyse ateş.endTurn'ü kazanma ve kaybetme kontrolleri önde olacak şekilde yeniden yaz.if (turn === 0) fire() satırının üstüne yeniden başlatma satırını yaz ve onu else if yap.draw'ın sonuna oyun bitti kutusunu yaz. Çalıştır.Beceriler: Oyun durumları