Atölye › Angry Birds Tarzı Sapan › 9/47. adım
Bu oyunda hareket eden her şey (uçan kuş, tahta bloklar, domuzlar) bir gövde (body) olacak: türü, konumu, boyu ve
hızı olan bir kutu. Hepsini tek bir dizide (listede) tutacağız: bodies. Böylece hepsini aynı kodla hareket
ettirip aynı kodla çizebileceğiz.
Bu adımda gövdeyi yapan küçük bir yardımcı yazıyoruz ve draw'a listedeki her gövdeyi çizdiriyoruz. Liste şimdilik
boş, o yüzden ekran değişmeyecek.
```js
let bodies // { kind, x, y, w, h, vx, vy }
let bird // the bird in flight, or null
const body = (kind, x, y, w, h) => ({ kind, x, y, w, h, vx: 0, vy: 0 })
bodies = []
bird = null
for (const b of bodies) {
const m = MATERIALS[b.kind]
ctx.fillStyle = m.color
ctx.beginPath()
ctx.arc(b.x + b.w / 2, b.y + b.h / 2, b.w / 2, 0, Math.PI * 2)
ctx.fill()
}
```let bodies → bütün gövdelerin listesi. Yorum, bir gövdenin içinde ne olduğunu söylüyor: tür (kind), sol üst
köşe (x, y), en ve boy (w, h), hız (vx yatay, vy dikey).let bird → uçmakta olan kuş; uçan kuş yoksa null ("hiçbir şey").const body = (kind, x, y, w, h) => ({ ... }) → kısa bir fonksiyon (ok fonksiyonu): verilen bilgilerle yeni bir
gövde nesnesi yapıp geri verir. Süslü parantez normal parantez içinde, çünkü geri verilen şey bir nesne.
{ kind, x } yazmak { kind: kind, x: x } demenin kısa yolu. Hız başta 0.reset() içinde bodies = [] → boş liste ile başla; bird = null → uçan kuş yok.for (const b of bodies) { → listedeki her gövde için, sırayla, ona b de ve içini yap.MATERIALS[b.kind] → gövdenin türüne göre malzemesi. Ad ('bird') bir değişkenden geldiği için nokta yerine
köşeli parantez kullanılır.ctx.arc(b.x + b.w / 2, b.y + b.h / 2, b.w / 2, ...) → kutunun ortasına, enin yarısı kadar yarıçaplı bir daire.let aim satırının üstüne let bodies ve let bird satırlarını yaz.let aim satırının altında bir boş satır bırak ve const body = ... satırını yaz.reset fonksiyonunun en üstüne (aim = ... satırının üstüne) bodies = [] ve bird = null yaz.draw fonksiyonunun en sonuna, kuşun ctx.fill() satırından sonra bir boş satır bırakıp for döngüsünü yaz.Beceriler: Diziler ve nesneler, Oyun durumları
← Ok tuşlarıyla nişan al Fırlat! →