Atölye › Bomberman Tarzı Arena › 30/42. adım
Düşmanlar tıpkı oyuncu gibi yürür: kareden kareye, bir hedef ve moveTo ile. Yalnız daha yavaştır ve yollarını
kendileri seçer. Her karede gidebilecekleri yönleri listeler ve rastgele birini seçerler.
Bombalar walkable için engel olduğundan düşmanlar bombaların da etrafından dolaşır.
```js
const ENEMY_SPEED = 0.05
function updateEnemy(e) {
if (!e.target) {
const options = Object.values(DIRS).filter(([dr, dc]) => walkable(e.y + dr, e.x + dc))
if (options.length === 0) return
e.dir = options[Math.floor(Math.random() * options.length)]
e.target = { r: e.y + e.dir[0], c: e.x + e.dir[1] }
}
moveTo(e, ENEMY_SPEED)
}
for (const e of enemies) updateEnemy(e)
```const ENEMY_SPEED = 0.05 → düşmanlar oyuncunun yarı hızında.if (!e.target) { → düşman tam bir karenin üstündeyse (hedefi yoksa) yeni yön seçer:Object.values(DIRS).filter(...) → dört yönden, bir sonraki karesi yürünebilir olanlar.if (options.length === 0) return → hiç yol yoksa (etrafı kapalıysa) bekler.Math.floor(Math.random() * options.length) → rastgele bir sıra numarası. Math.random() * 3 0 ile 3 arası bir
sayı; Math.floor aşağı yuvarlar: 0, 1 ya da 2.e.dir = options[...] → seçilen yön; e.target = ... → o yöndeki kare.moveTo(e, ENEMY_SPEED) → hedefe doğru kay; oyuncuyla aynı fonksiyon.for (const e of enemies) updateEnemy(e) → update içinde her düşman.const SPEED = ... satırının altına ENEMY_SPEED satırını yaz.function hurt() { satırının üstüne updateEnemy fonksiyonunu yaz.update içinde updatePlayer() satırının altına düşman satırını yaz.Beceriler: Oyun durumları