Atölye › Pac-Man Tarzı Labirent Kovalamaca › 21/42. adım
Şimdi hayalete akıl verelim. Orijinal atari oyunundaki hayalet beyni şaşırtıcı derecede basit:
Yol bulma (harita üstünde en kısa yolu hesaplama) yok. Hayalet bazen yanlış yola sapar; bu onu canlı gösterir ve sen onu atlatabilirsin. Şimdilik hedef: oyuncu.
```js
function target(g) {
return player
}
const t = target(g)
const distance = (d) => (g.col + d[0] - t.col) ** 2 + (g.row + d[1] - t.row) ** 2
g.dir = options.reduce((bestDir, d) => (distance(d) < distance(bestDir) ? d : bestDir))
```function target(g) → hayaletin hedefi. Şimdilik hep oyuncu; ileride her hayalete farklı bir hedef vereceğiz.const distance = (d) => ... → d yönündeki sonraki döşemenin hedefe uzaklığının karesi (Pisagor: x² + y²).
** üs alma: 3 ** 2 → 9. Karşılaştırmak için kareler yeter; karekök (Math.sqrt) almaya gerek yok, çünkü küçük
olanın karesi de küçüktür.options.reduce((bestDir, d) => ...) → reduce listeyi gezerken elinde bir "şimdiye kadarki en iyi"yi taşır. İlk
eleman başlangıçtır; sonraki her d, ancak kesinlikle daha yakınsa (<) onun yerini alır.DIRECTIONS'ın sırası (yukarı, sol, aşağı, sağ) burada işe yarar.function chooseGhost(g) { satırının üstüne target fonksiyonunu yaz; altında bir boş satır kalsın.chooseGhost içinde son satırı (g.dir = options[0]) sil; yerine üç yeni satırı yaz.Beceriler: Oyun durumları, Diziler ve nesneler
← Hayalet yürür Evde dört hayalet →