Atölye › Space Invaders Tarzı › 15/21. adım
Oyun iki şekilde bitsin: son can gidince ya da bir istilacı geminin hizasına inince. Sonra her şey dursun ve koyu
bir bant GAME OVER yazsın. Oyunun hâlini state tutuyor: 'playing' (oynanıyor) ya da 'over' (bitti).
```js
let state = 'playing' // 'playing' or 'over'
if (lives <= 0) endGame()
}
function endGame() {
state = 'over'
}
if (state !== 'playing') return
if (state !== 'playing') return
if (alive().some((invader) => invader.y + invader.h >= SHIP_Y)) endGame()
if (state === 'over') {
ctx.fillStyle = 'rgba(0, 0, 0, 0.7)'
ctx.fillRect(0, 200, canvas.width, 120)
ctx.fillStyle = 'white'
ctx.textAlign = 'center'
ctx.font = 'bold 32px monospace'
ctx.fillText('GAME OVER', canvas.width / 2, 250)
}
```update'in başındaki if (state !== 'playing') return → oyun bittiyse hiçbir şey hareket etmesin.loseLife()'ın hemen altında → son can o karede gittiyse karenin geri kalanını da yapma.invader.y + invader.h >= SHIP_Y → bir istilacının alt kenarı geminin hizasına indi: istila oldu, oyun biter.rgba(0, 0, 0, 0.7) → %70 opak siyah: arkadaki oyun hafifçe görünür.let lives satırının altına state satırını yaz.loseLife'ın sonuna if (lives <= 0) endGame() yaz; altına endGame fonksiyonunu yaz.update'in en üstüne durdurma satırını ve bir boş satır yaz; gemi kontrolünün (loseLife()) altına aynı satırı yaz.update'in sonuna, yürüyüş bloğunun altına istila satırını yaz.draw'ın sonuna, bir boş satırdan sonra GAME OVER bloğunu yaz. Çalıştır.Beceriler: Oyun durumları