Atölye › Pac-Man Tarzı Labirent Kovalamaca › 11/42. adım
Oyuncuyu ok tuşlarıyla yönetelim. Ama dikkat: tuş dir'i doğrudan değiştirmeyecek, want'ı (istenen yön)
değiştirecek. Neden?
Yön yalnız döşeme ortasında değişebiliyor ve yan koridora ancak tam köşede girilebiliyor. İnsan tam o anı yakalayamaz. Bu yüzden isteği hatırlarız: köşeden biraz önce "yukarı"ya basarsın, oyuncu köşeye gelince yukarı açıksa döner. Açık değilse düz gitmeye devam eder. Labirent oyunlarının "tuşa hemen cevap veriyor" hissinin sırrı bu.
```js
// Checked in this order, so ties go to up, then left, then down.
const DIRECTIONS = { ArrowUp: [0, -1], ArrowLeft: [-1, 0], ArrowDown: [0, 1], ArrowRight: [1, 0] }
function choosePlayer(p) {
// The wanted direction is remembered, so a turn pressed early happens at the next corner.
if (!same(p.want, STOP) && canGo(p, p.want)) p.dir = p.want
else if (!canGo(p, p.dir)) p.dir = STOP
}
function steer(dir) {
player.want = dir
}
document.addEventListener('keydown', (event) => {
const dir = DIRECTIONS[event.key]
if (dir) {
event.preventDefault()
steer(dir)
}
})
```const DIRECTIONS = { ArrowUp: [0, -1], ... } → her ok tuşunun adına yönünü eşleyen bir nesne. Sıra önemli
(yukarı, sol, aşağı, sağ); hayaletler eşitlikte bu sırayı kullanacak, yorum bunu söylüyor.if (!same(p.want, STOP) && canGo(p, p.want)) p.dir = p.want → bir istek var ve o yön açıksa: dön.else if (!canGo(p, p.dir)) p.dir = STOP → değilse eğer gittiği yön kapalıysa: dur. İkisi de değilse düz
devam.function steer(dir) → yönlendirme: şimdilik yalnız isteği kaydeder. (Dokunmatik ekran da onu kullanacak.)document.addEventListener('keydown', (event) => { ... }) → bir tuşa basılınca çalışır. event.key tuşun adı:
'ArrowUp' gibi.DIRECTIONS[event.key] → ok tuşuysa yönü, değilse undefined (yok).event.preventDefault() → tarayıcının o tuşla kendi işini (sayfayı kaydırmayı) yapmasını engeller.const STOP = ... satırının üstüne yorumu ve DIRECTIONS satırını yaz.choosePlayer fonksiyonunun içini koddaki iki satırla (ve yorumla) değiştir.choosePlayer'ın altına bir boş satır bırakıp steer fonksiyonunu ve tuş dinleyicisini yaz.Beceriler: Klavye ve fare girdisi
← Her karede hareket Döşemeler arasında kay →