Atölye › Wolfenstein Tarzı 3B Labirent › 15/18. adım

Kaçış!

Ne yapıyoruz

Çıkış E yeşil bir duvar. Yanına kadar yürümek kazandırsın: her şey dursun ve süre gösterilsin. Boşluk yeniden oynatsın. Oyunun hâlini state tutuyor: 'playing' (oynanıyor) ya da 'won' (kazanıldı).

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

  state = 'playing'

// The player escapes by walking up to the exit.
function nearExit() {
  const row = MAP.findIndex((line) => line.includes('E'))
  const col = MAP[row].indexOf('E')
  return Math.hypot(player.x - (col + 0.5), player.y - (row + 0.5)) < 0.8
}

  if (event.key === ' ' && state === 'won') reset()

  if (state !== 'playing') return

  if (nearExit()) {
    state = 'won'
  }

  if (state === 'won') {
    ctx.fillStyle = 'rgba(15, 23, 42, 0.75)'
    ctx.fillRect(0, 0, canvas.width, H)
    ctx.fillStyle = '#22c55e'
    ctx.textAlign = 'center'
    ctx.font = 'bold 28px sans-serif'
    ctx.fillText('Escaped in ' + seconds(frames) + ' s', canvas.width / 2, H / 2)
    ctx.fillStyle = 'white'
    ctx.font = '16px sans-serif'
    ctx.fillText('Press Space to play again', canvas.width / 2, H / 2 + 30)
  }
```

Ne işe yarıyor

Sıra sende

  1. let player satırının altına state yaz; reset'te player satırının altına state = 'playing' yaz.
  2. Tuş dinleyicilerinin üstüne nearExit yaz; keydown'a Boşluk satırını ekle.
  3. update'in en üstüne durdurma satırını, sonuna kazanma bloğunu yaz.
  4. draw'ın sonuna, bir boş satırdan sonra kazanma ekranını yaz. Çalıştır ve çıkışı bul (mini haritada yeşil).

Beceriler: Oyun durumları

Tüm adımlar

  1. Harita
  2. Oyuncu
  3. Tavan, zemin ve döngü
  4. Dön
  5. Yürü
  6. Duvar mı?
  7. Duvarda dur, boyunca kay
  8. Işın: nereden başlıyor
  9. Işın: ızgara çizgileri
  10. Işın: duvara kadar yürü
  11. 3B görünüm
  12. Balık gözü yok
  13. Işık ve gölge
  14. Süre
  15. Kaçış!
  16. En iyi süre
  17. Dokunmatik kontrol
  18. Kendin yap: koş