Atölye › Scorched Earth Tarzı Topçu › 10/23. adım
Merminin zemine değdiği yerde bir patlama olsun: 20 kare boyunca büyüyen turuncu bir ateş topu. O sırada durum
'boom'; kimse ateş edemez. Yandan çıkan mermi atışı patlamasız bitirir.
```js
const BLAST = 30 // explosion radius
let blast // { x, y } while an explosion shows
let timer // frames left to watch the explosion
blast = null
function explode(x, y) {
blast = { x, y }
}
if (state === 'boom' && --timer === 0) {
blast = null
state = 'aiming'
}
if (hit !== 'away') explode(shell.x, shell.y)
shell = null
state = 'boom'
timer = 20
if (blast) {
// The fireball grows as the timer runs down.
ctx.fillStyle = 'rgba(249, 115, 22, 0.8)'
ctx.beginPath()
ctx.arc(blast.x, blast.y, BLAST * (1 - timer / 40), 0, Math.PI * 2)
ctx.fill()
}
```--timer === 0 → önce bir azalt, sonra karşılaştır: patlama tam 20 kare sürer.explode şimdilik yalnız yeri işaretliyor; sonraki adımlarda zemini kazacak ve tankları yaralayacak.hit !== 'away' → yandan çıkan mermide patlama yok, ama atış yine 'boom' ile biter.BLAST * (1 - timer / 40): timer 20'deyken 15, 0'a inerken 30'a büyür.GRAVITY altına BLAST, let shell altına blast ve timer yaz; reset'te shell = null altına
blast = null yaz.update'in üstüne explode yaz.update'in en üstüne patlama sayacı bloğunu yaz; sonundaki iki satırı dört satırla değiştir.draw'da mermi bloğunun altına ateş topu bloğunu yaz. Çalıştır ve ateş et.Beceriler: Oyun durumları, Canvas üzerine çizim