Atölye › Missile Command Tarzı Savunma › 15/35. adım
Önleyiciler füzelere doğrudan çarpmayacak; vardıkları yerde patlayacaklar. Füzeyi değil, füzenin gideceği yeri hedeflemen gerekecek: oyunun asıl zevki bu.
Bir patlama yalnız bir yer ve bir yaş (age, kaç karedir yaşadığı) olacak. Büyüklüğünü (yarıçapını) yaştan
hesaplayacağız: ömrünün ilk yarısında 0'dan 32'ye büyür, ikinci yarısında yeniden 0'a küçülür. Bu adımda o
hesabı yapan fonksiyonu yazıyoruz.
```js
const BLAST = 32 // the biggest radius of an explosion
const BLAST_FRAMES = 50 // how long an explosion lasts, growing then shrinking
// How big an explosion is at its age: it grows for the first half and shrinks in the second.
function radius(b) {
const t = b.age / BLAST_FRAMES
return BLAST * (t < 0.5 ? t * 2 : (1 - t) * 2)
}
```BLAST = 32 → patlamanın en büyük yarıçapı. BLAST_FRAMES = 50 → ömrü: 50 kare (yaklaşık 0.8 saniye).const t = b.age / BLAST_FRAMES → ömrün ne kadarı geçti: 0 (yeni doğdu) ile 1 (bitti) arası.t < 0.5 ? t * 2 : (1 - t) * 2 → ilk yarıda t * 2 0'dan 1'e çıkar; ikinci yarıda (1 - t) * 2 1'den 0'a iner.BLAST * (...) → bunu 32 ile çarp: yarıçap 0 → 32 → 0.const SHOT_SPEED = 7 satırının altına iki sabiti yaz.function update() { satırının üstüne yorumuyla birlikte radius fonksiyonunu yaz; altında bir boş satır kalsın.Beceriler: Hız ve yerçekimi
← Önleyiciler uçuyor Varınca patla →