Atölye › Pac-Man Tarzı Labirent Kovalamaca › 9/42. adım
Hareketin kalbi: advance(e, choose), bir şeyi bir kare ilerletir. Oyuncu da hayaletler de aynı fonksiyonla
yürüyecek; farkları yalnız nasıl yön seçtikleri. O yüzden yön seçen fonksiyonu (choose) parametre olarak
alıyor.
Kural: yön yalnız bir döşemenin tam ortasında (progress === 0) seçilir. Böylece herkes koridorlara tam hizalı
kalır. Sonra her karede progress bir artar; frames'e ulaşınca adım biter: döşeme değişir, progress yine 0 olur.
```js
// One frame of movement. Directions are only chosen at the center of a tile, by `choose`.
function advance(e, choose) {
if (e.progress === 0) choose(e)
if (same(e.dir, STOP)) return
e.progress += 1
if (e.progress < e.frames) return
e.progress = 0
e.col = wrap(e.col + e.dir[0])
e.row += e.dir[1]
}
```function advance(e, choose) → e hareket eden şey, choose onun yön seçen fonksiyonu. Fonksiyonlar da
başka bir fonksiyona değer gibi verilebilir; choose(e) ona ne verildiyse onu çağırır.if (e.progress === 0) choose(e) → döşemenin ortasındaysa yön seç.if (same(e.dir, STOP)) return → duruyorsa bu karede başka bir şey yapma. return fonksiyonu erken bitirir.e.progress += 1 → adımda bir kare daha.if (e.progress < e.frames) return → adım henüz bitmedi.progress sıfırlanır, col ve row yön kadar değişir. Sütun wrap ile sarılır; tünel böyle çalışır.reset fonksiyonunun kapanan }'inin altına bir boş satır bırak; yorumu ve advance fonksiyonunu yaz.advance'i çağırmıyor; kontroller onu elle çağıracak.Beceriler: Oyun durumları, Fonksiyonlar
← Hareket edenin hafızası Her karede hareket →