Atölye › Pac-Man Tarzı Labirent Kovalamaca › 19/42. adım

Hayalet geri dönmez

Ne yapıyoruz

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]
}
```

Ne işe yarıyor

Sıra sende

  1. function placeActors() { satırının üstüne yorumu ve ghostFrames fonksiyonunu yaz; altında bir boş satır kalsın.
  2. choosePlayer fonksiyonunun altına bir boş satır bırakıp chooseGhost'u yaz.
  3. Çalıştır. Hayalet henüz yürümüyor; kontroller chooseGhost'u elle çağıracak.

Beceriler: Oyun durumları, Diziler ve nesneler

Tüm adımlar

  1. Metin olarak labirent
  2. Oyun döngüsü
  3. Duvarları çiz
  4. Yem kümesi
  5. Yemleri çiz
  6. Oyuncu
  7. Nereden yürünür?
  8. Hareket edenin hafızası
  9. Bir karelik hareket
  10. Her karede hareket
  11. Önceden basılan dönüşler
  12. Döşemeler arasında kay
  13. Anında geri dön
  14. Telefonda kaydırma
  15. Yemleri ye
  16. Skoru göster
  17. Labirenti bitir
  18. Kırmızı bir hayalet
  19. Hayalet geri dönmez
  20. Hayalet yürür
  21. Hayalet seni avlar
  22. Evde dört hayalet
  23. Evden birer birer
  24. Dağıl mı, kovala mı?
  25. Her hayalet köşesine
  26. Pembe önünü keser
  27. Turuncu utangaç
  28. Camgöbeği kırmızıyla çalışır
  29. İlk tuşu bekle
  30. Oyuncuya başlamasını söyle
  31. Üç can
  32. Yakalandın!
  33. Oyun bitti
  34. Yeniden oyna
  35. Hayaletleri korkut
  36. Güç yemleri çalışır
  37. Korkmuş hayalet yavaş dolaşır
  38. Korkmuş hayaleti ye
  39. Mavi, sonra yanıp sönen
  40. Zorlaşan bölümler
  41. Kalıcı en iyi skor
  42. Kendin yap: yavaş tünel