Atölye › Pac-Man Tarzı Labirent Kovalamaca › 19/42. adım
Hayaleti yürütmek için yeni bir hareket kodu yazmamıza gerek yok: advance zaten hazır! Hayalete yalnız kendi yön
seçme fonksiyonunu vereceğiz: chooseGhost.
Hayalet beyninin ilk kuralı: her döşeme ortasında açık yönleri listele, ama geri dönmeyi listeye koyma. Hayalet ancak başka yolu yoksa (çıkmaz sokakta) geri döner. Bu kural onun iki döşeme arasında titreyip durmasını önler. Şimdilik listedeki ilk yolu seçecek; akıllı seçimi birazdan yapacağız.
Hız: hayalet bir döşemeyi 9 karede geçsin, oyuncudan (8) biraz yavaş. Bunu ghostFrames söyleyecek.
```js
// Frames a ghost needs to cross one tile (the player always needs PLAYER_FRAMES): smaller is faster.
function ghostFrames(g) {
return 9
}
function chooseGhost(g) {
g.frames = ghostFrames(g)
// Ghosts never turn back on their own: only the open ways that are not backwards.
const options = Object.values(DIRECTIONS).filter((d) => canGo(g, d) && !same(d, reverse(g.dir)))
if (options.length === 0) {
g.dir = reverse(g.dir)
return
}
g.dir = options[0]
}
```ghostFrames(g) → hayaletin bir döşemeyi kaç karede geçeceği. Şimdilik hep 9; ileride korkunca ve bölüm
ilerleyince değişecek.g.frames = ghostFrames(g) → her döşeme ortasında hızını yeniden sor.Object.values(DIRECTIONS) → nesnenin değerlerinden bir liste: dört yön, yukarı-sol-aşağı-sağ sırasıyla..filter((d) => canGo(g, d) && !same(d, reverse(g.dir))) → açık olan ve geri dönüş olmayan yönler.options.length === 0 → hiç seçenek yoksa geri dön.g.dir = options[0] → şimdilik ilk seçenek.function placeActors() { satırının üstüne yorumu ve ghostFrames fonksiyonunu yaz; altında bir boş satır
kalsın.choosePlayer fonksiyonunun altına bir boş satır bırakıp chooseGhost'u yaz.chooseGhost'u elle çağıracak.Beceriler: Oyun durumları, Diziler ve nesneler
← Kırmızı bir hayalet Hayalet yürür →