Atölye › Mario Tarzı Platform › 26/37. adım
moveX ve moveY'yi her kutu için yazmıştık; şimdi karşılığını alıyoruz. Bir düşman, oyuncuyla aynı
fonksiyonlarla yürür, düşer, zemine iner ve duvara çarpar. Fiziği bir kez yaz, hareket eden her şey için kullan.
Düşmanın ilk kuralı: yönünde karede bir piksel yürü; moveX "duvara çarptım" (true) derse geri dön.
```js
function updateEnemy(enemy) {
enemy.vx = enemy.dir
if (moveX(enemy)) enemy.dir = -enemy.dir
enemy.vy = Math.min(MAX_FALL, enemy.vy + GRAVITY)
moveY(enemy)
}
for (const enemy of enemies) updateEnemy(enemy)
```enemy.vx = enemy.dir → hız yön kadar: karede 1 piksel sola ya da sağa.if (moveX(enemy)) enemy.dir = -enemy.dir → moveX hem hareket ettirir hem "duvara çarptım mı?" diye cevap verir.
Çarptıysa yönü ters çevir: −1 → 1, 1 → −1.enemy.vy = ... ve moveY(enemy) → oyuncununkiyle aynı yerçekimi ve iniş.update içinde for (const enemy of enemies) updateEnemy(enemy) → oyuncudan sonra her düşmanı güncelle. Döngünün
gövdesi tek satırsa süslü parantez gerekmez.function update() { satırının üstüne updateEnemy fonksiyonunu yaz; altında bir boş satır kalsın.update içinde updatePlayer() satırının hemen altına düşman döngüsünü yaz.Beceriler: Hız ve yerçekimi, Fonksiyonlar