Atölye › Zelda Tarzı Zindan › 19/22. adım

Oyun bitti

Ne yapıyoruz

Son kalbi kaybetmek oyunu bitirsin: her şey dursun, karanlık bir ekran bunu söylesin; Boşluk (ya da bir dokunuş) yeniden başlatsın. Ekran kaçıştan sonra ne diyeceğini de şimdiden biliyor; merdiven sonraki adımda.

```js
let state // 'playing', 'won' or 'over'

  state = 'playing'

  if (state !== 'playing') return

      if (hearts === 0) state = 'over'

    if (state !== 'playing') reset()
    else if (swing === 0) swing = 12

  if (state !== 'playing') {
    reset()
    return
  }

  if (state !== 'playing') {
    ctx.fillStyle = 'rgba(12, 10, 9, 0.75)'
    ctx.fillRect(0, 0, canvas.width, canvas.height)
    ctx.fillStyle = 'white'
    ctx.textAlign = 'center'
    ctx.font = 'bold 28px sans-serif'
    ctx.fillText(state === 'won' ? 'You escaped in ' + seconds(frames) + ' s!' : 'Game over', canvas.width / 2, 190)
    ctx.font = '16px sans-serif'
    ctx.fillText('Press Space to play again', canvas.width / 2, 222)
  }
```

Ne işe yarıyor

Sıra sende

  1. let frames üstüne state, reset'te frames = 0 altına state = 'playing' yaz.
  2. update'in en üstüne durdurma satırını; dokunma bloğunda hurt = 60 altına oyun bitti satırını yaz.
  3. keydown'da sallama satırının üstüne yeniden başlatma satırını yazıp sallamayı else if yap; dokunmada const y altına yeniden başlatma bloğunu yaz.
  4. draw'ın sonuna bitiş ekranını yaz. Çalıştır.

Beceriler: Oyun durumları

Tüm adımlar

  1. Bir oda
  2. Kahraman
  3. Oyun döngüsü
  4. Yürü
  5. Duvarlar
  6. Dokunmatik ped
  7. Sonraki oda
  8. Kılıç
  9. Düşmanlar
  10. Vur!
  11. Peşine düşüyorlar
  12. Dolaşıyorlar
  13. Ah
  14. Yanıp sönme ve kalpler
  15. Anahtarlar ve kalpler
  16. Hatırlayan dünya
  17. Kilitli kapı
  18. Süre
  19. Oyun bitti
  20. Çıkış merdiveni
  21. En iyi süre
  22. Kendin yap: temizlenen odalar