CodeBlanks Logo Icon CodeBlanks

Hareket ve etkileşim

JavaScript kursu · Uzman · Ders 50/63

keydown olayı ile oyuncuyu hareket ettirip oyun döngüsünde pozisyon güncellersin.

Klavye girdisi

Oyuncuyu klavyeyle hareket ettirmek için keydown ve keyup olaylarını dinleriz. Bir tuşa basılınca keys[event.key] = true, bırakılınca keys[event.key] = false yazarız. event.key basılan tuşun adını verir; ok tuşları için ArrowLeft, ArrowRight, ArrowUp ve ArrowDown değerlerini alırız.

Olayları window.addEventListener ile bağlarız. Tuş durumlarını bir keys nesnesinde tutmak, birden çok tuşa aynı anda basmayı da destekler.

Konum güncelleme

Çizim döngüsünde her karede bir update işlevi çağırırız. Bu işlev keys nesnesine bakar ve ok tuşlarına göre player.x ile player.y değerlerini değiştirir. Örneğin sol ok basılıysa player.x -= 4 ile oyuncuyu sola kaydırırız.

Hız değeri (4 piksel/kare) ne kadar büyükse oyuncu o kadar hızlı hareket eder. update işlevini draw içinde, çizimden sonra çağırırız.

Uygulama Oyuncuyu ok tuşlarıyla hareket ettir

keys adında boş bir nesne tanımla. window.addEventListener("keydown", ...) ile tuşa basıldığında keys[event.key] = true, window.addEventListener("keyup", ...) ile bırakıldığında keys[event.key] = false yaz. Sonra bir update işlevi ekle: ArrowLeft basılıysa player.x -= 4, ArrowRight basılıysa player.x += 4, ArrowUp basılıysa player.y -= 4, ArrowDown basılıysa player.y += 4. Son olarak draw işlevinin sonuna update() çağrısı ekle.

Örnek çözümü göster
const keys = {};

window.addEventListener("keydown", (event) => {
  keys[event.key] = true;
});
window.addEventListener("keyup", (event) => {
  keys[event.key] = false;
});

function update() {
  if (keys["ArrowLeft"]) player.x -= 4;
  if (keys["ArrowRight"]) player.x += 4;
  if (keys["ArrowUp"]) player.y -= 4;
  if (keys["ArrowDown"]) player.y += 4;
}

// draw işlevinin sonuna update(); ekle

Kendini test et

  1. Klavye tuşuna basıldığını yakalamak için hangi olay kullanılır?

    • click
    • keydown
    • submit
    • load
    Cevabı göster

    keydown — Doğru! keydown bir tuşa basıldığı an tetiklenir.

  2. keydown olayını dinle

    window.addEventListener(____, (event) => { keys[event.key] = true; });
    Cevabı göster
    window.addEventListener("keydown", (event) => { keys[event.key] = true; });
  3. Olay kavramlarını eşleştir

    keydown
    Tuşa basıldı
    keyup
    Tuş bırakıldı
    addEventListener
    Olayı dinle
    event.key
    Basılan tuş

Uzman bölümündeki tüm dersler