Atölye › Angry Birds Tarzı Sapan › 17/47. adım
Bir atış ne zaman biter? Kuş yere indiğinde değil; her şey durduğunda. İleride kuş kuleleri yıkacak; bloklar bir süre daha yuvarlanıp düşecek. Onların da durmasını beklemeliyiz.
calm (sakin) bir sayaç: kaç karedir üst üste hiçbir şey kıpırdamıyor? Bir şey kıpırdarsa 0'a döner. Bu adımda
yalnız sayıyoruz; bir sonraki adımda bu sayıyla karar vereceğiz.
```js
let calm // frames everything has been still
calm = 0
function update() {
step()
if (state !== 'flying') return
// Wait until everything has stopped for a second before the next bird.
const moving = bodies.some((b) => Math.abs(b.vx) > 0.1 || Math.abs(b.vy) > 0.3)
calm = moving ? 0 : calm + 1
}
```let calm → sakin kare sayacı. reset içinde ve her fırlatışta (launch içinde state = 'flying''in altında)
0'dan başlar.if (state !== 'flying') return → uçuş yoksa sayacak bir şey yok.bodies.some((b) => ...) → "listede koşulu sağlayan en az bir gövde var mı?" true ya da false verir.Math.abs(b.vx) → sayının işaretsiz hâli: Math.abs(-3) → 3. Sola giden de hareket ediyordur.Math.abs(b.vx) > 0.1 || Math.abs(b.vy) > 0.3 → yatay ya da dikey hızı küçük bir eşikten büyükse hareket ediyor.
|| "ya da" demek. (Çok küçük kıpırtılar sayılmaz.)calm = moving ? 0 : calm + 1 → ? : iki değerden birini seçer: hareket varsa 0, yoksa sayacı bir artır.let state satırının altına let calm yaz.reset içinde state = 'aiming' satırının altına calm = 0 yaz.launch içinde state = 'flying' satırının altına da calm = 0 yaz.update içinde step() satırının altına dört yeni satırı yaz.Beceriler: Oyun durumları
← Ekrandan çıkan gider Sıradaki kuş →