Atölye › Pac-Man Tarzı Labirent Kovalamaca › 32/42. adım
Şimdi tehlike gerçek. Herkes yürüdükten sonra oyuncunun yerini, evden çıkmış her hayaletin yeriyle karşılaştıracağız. Aralarında 0.6 döşemeden az mesafe varsa yakalandın:
'over'.Yerleri position ile karşılaştırıyoruz, döşemelerle değil; çünkü herkes döşemeler arasında kayıyor.
```js
function caught() {
lives -= 1
if (lives > 0) {
placeActors()
return
}
state = 'over'
}
const p = position(player)
for (const g of ghosts) {
if (g.waiting > 0) continue
const q = position(g)
if (Math.abs(p.x - q.x) + Math.abs(p.y - q.y) > 0.6) continue
caught()
return
}
```caught() → lives -= 1; can kaldıysa placeActors() (herkes yerine, durum yine 'ready'), yoksa state = 'over'. update yalnız 'playing'de çalıştığı için oyun donar.const p = position(player) → oyuncunun ondalıklı yeri.if (g.waiting > 0) continue → evdeki hayaletleri atla.Math.abs(p.x - q.x) + Math.abs(p.y - q.y) → yatay ve dikey uzaklıkların toplamı (ızgarada yürüme mesafesi).
0.6'dan büyükse bu hayalet uzakta: continue.caught() ve return → yakalandın; bu karede başka bir şeye bakma.document.addEventListener('keydown', ... satırının üstüne caught fonksiyonunu yaz; altında bir boş satır
kalsın.update'in sonuna, hayalet döngüsünün altına bir boş satır bırakıp yakalama döngüsünü yaz.Beceriler: Çarpışma tespiti, Oyun durumları