Atölye › Wolfenstein Tarzı 3B Labirent › 15/18. adım
Çı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)
}
```MAP.findIndex((line) => line.includes('E')) → içinde E olan satırın numarası; indexOf('E') o satırdaki
sütun.Math.hypot(a, b) → √(a² + b²): oyuncudan çıkış karesinin ortasına düz çizgi uzaklığı.update'in başındaki return → kazanınca her şey ve süre donar.reset() çağırır; reset artık state'i de geri koyuyor.let player satırının altına state yaz; reset'te player satırının altına state = 'playing' yaz.nearExit yaz; keydown'a Boşluk satırını ekle.update'in en üstüne durdurma satırını, sonuna kazanma bloğunu yaz.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ı