Atölye › Asteroids › 11/41. adım
Asteroids'te duvar yoktur: sağdan çıkan gemi soldan, yukarıdan çıkan aşağıdan geri gelir. Uzay kendi etrafında döner.
Bunun aracı kalan işlemi %: 605 % 600 → 5; sağ kenarı 5 piksel geçen gemi sol kenardan 5 piksel içeride olur.
Saat de böyle çalışır: 13 % 12 → 1. Tuzak: JavaScript'te % soldaki sayının işaretini korur: -5 % 600 sonucu
595 değil -5. Sol ya da üst kenardan çıkan gemi eksi bir yere gider ve kaybolurdu.
Çözüm klasik bir tek satır: kalanı al, boyutu ekle, bir kez daha kalanı al. Bir kez fonksiyon olarak yazıp hareket eden her şeyde kullanacağız.
```js
// Wrap a coordinate around the screen. Plain % keeps the sign in JavaScript (-5 % 600 is -5), so add the size first.
function wrap(value, size) {
return ((value % size) + size) % size
}
ship.x = wrap(ship.x + ship.vx, canvas.width)
ship.y = wrap(ship.y + ship.vy, canvas.height)
```function wrap(value, size) → value ve size parametre: çağırırken verdiğin bilgilerin adları.
wrap(605, 600) dediğinde içeride value 605, size 600 olur.return ... → sonucu geri ver; ship.x = wrap(...) bu sonucu ship.x'e yazar.wrap(-5, 600) → -5 % 600 = -5, + 600 = 595, 595 % 600 = 595. Doğru!wrap(605, 600) → 5, + 600 = 605, % 600 = 5. İkinci % bu yüzden var.+= değil: yeni konumu hesaplayıp wrap'ten geçiriyor. Yatayda tuvalin eni (600), dikeyde
boyu (450).function resetShip() { satırının üstüne yorum satırını ve wrap fonksiyonunu yaz; altında bir boş satır kalsın.update içindeki ship.x += ship.vx ve ship.y += ship.vy satırlarını sil; yerine wrap'li iki satırı yaz.Beceriler: Hız ve yerçekimi