Atölye › Space Invaders Tarzı › 15/21. adım

Oyun bitti

Ne yapıyoruz

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)
  }
```

Ne işe yarıyor

Sıra sende

  1. let lives satırının altına state satırını yaz.
  2. loseLife'ın sonuna if (lives <= 0) endGame() yaz; altına endGame fonksiyonunu yaz.
  3. 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.
  4. update'in sonuna, yürüyüş bloğunun altına istila satırını yaz.
  5. draw'ın sonuna, bir boş satırdan sonra GAME OVER bloğunu yaz. Çalıştır.

Beceriler: Oyun durumları

Tüm adımlar

  1. Gemi
  2. Oyun döngüsü
  3. Gemiyi oynat
  4. Ekranda kal
  5. Ateş
  6. Mermiler uçuyor
  7. Kısa bir dolum
  8. İstilacılar
  9. Yürüyüş
  10. Vurdun!
  11. Puan
  12. Karşılık veriyorlar
  13. Bombalar düşüyor
  14. Canlar
  15. Oyun bitti
  16. En iyi puan
  17. Dalga bir fonksiyonda
  18. Yeniden oyna
  19. Dalgalar
  20. Gittikçe hızlanan
  21. Kendin yap: fazladan can