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

Önceden basılan dönüşler

Ne yapıyoruz

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

Ne işe yarıyor

Sıra sende

  1. const STOP = ... satırının üstüne yorumu ve DIRECTIONS satırını yaz.
  2. choosePlayer fonksiyonunun içini koddaki iki satırla (ve yorumla) değiştir.
  3. choosePlayer'ın altına bir boş satır bırakıp steer fonksiyonunu ve tuş dinleyicisini yaz.
  4. Çalıştır, oyuna tıkla ve ok tuşlarıyla dolaş. Bir köşeye varmadan az önce dönüş tuşuna bas: köşede dönmeli.

Beceriler: Klavye ve fare girdisi

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