Atölye › Zelda Tarzı Zindan › 4/22. adım
Bir ok tuşunu basılı tutmak kahramanı o yöne karede 2.5 piksel yürütsün ve o yöne döndürsün. DIRS her ok tuşuna
yönünü veriyor. Duvarlar henüz durdurmuyor.
```js
const SPEED = 2.5
const DIRS = { ArrowUp: [0, -1], ArrowDown: [0, 1], ArrowLeft: [-1, 0], ArrowRight: [1, 0] }
const held = {}
function move(body, dx, dy) {
body.x += dx
body.y += dy
}
document.addEventListener('keydown', (event) => {
held[event.key] = true
if (DIRS[event.key]) event.preventDefault()
})
document.addEventListener('keyup', (event) => {
held[event.key] = false
})
function update() {
let dir = null
for (const key in DIRS) if (held[key]) dir = DIRS[key]
if (dir) {
player.dir = dir
move(player, dir[0] * SPEED, dir[1] * SPEED)
}
}
update()
```DIRS → her ok tuşunun adına yönü: [yana, aşağı].held → basılı tuşlar; basınca true, bırakınca false.for (const key in DIRS) → nesnenin alan adlarını gezer: dört okun adı. Basılı olanın yönü dir olur.if (dir) → bir ok basılıysa: o yöne dön ve yürü. null "yok" demek, if onu yanlış sayar.move(body, dx, dy) → herhangi bir gövdeyi (şimdi kahraman, sonra düşmanlar) kaydırır; bir sonraki adımda duvar
kontrolü buraya girecek.SIZE altına SPEED, ROWS altına DIRS, let player altına held yaz.draw'ın üstüne move, iki tuş dinleyicisini ve update'i yaz.loop içinde draw()'ın üstüne update() yaz. Çalıştır, oyuna tıkla ve oklarla yürü.Beceriler: Klavye ve fare girdisi