Atölye › Missile Command Tarzı Savunma › 27/35. adım
Bir dalga ne zaman biter? Fırlatılacak füze kalmadığında, gökte füze kalmadığında ve hiçbir patlama sürmediğinde. O anda sana bir bonus verilecek: ayakta kalan her şehir için 100, harcamadığın her önleyici için 5 puan. Sonra kısa bir mola ve bir sonraki dalga.
Oyunun hangi aşamada olduğunu bir değişkende tutuyoruz: state (durum). Şimdilik iki değeri var: 'playing' (oyunda)
ve 'between' (dalgalar arası mola).
```js
let state // 'playing', 'between' (a pause after a wave) or 'over'
let pause
state = 'playing'
if (state === 'between') {
pause -= 1
if (pause <= 0) nextWave()
return
}
if (toLaunch === 0 && incoming.length === 0 && blasts.length === 0) {
// Bonus for every city still standing and every interceptor left.
score += cities.filter((c) => c.alive).length * 100 + ammo * 5
state = 'between'
pause = 90
}
```let state → oyunun durumu; let pause → molada kaç kare kaldı.nextWave içinde state = 'playing' → her dalga oyun durumunda başlar.update'in başında: moladaysak pause'u bir azalt; 0'a inince nextWave(). return fonksiyonun geri kalanını
atlar: molada füze fırlatılmaz, hiçbir şey hareket etmez.update'in sonunda: toLaunch === 0 && incoming.length === 0 && blasts.length === 0 → üç koşul birden: dalga bitti.cities.filter((c) => c.alive).length * 100 → ayaktaki şehir sayısı × 100. ammo * 5 → kalan önleyici × 5.state = 'between', pause = 90 → 90 karelik (1.5 saniye) mola başlar.let score satırının altına let state (yorumuyla) ve let pause yaz.nextWave fonksiyonunun sonuna, ammo = ... satırının altına state = 'playing' yaz.update fonksiyonunun en başına between bloğunu yaz; altında bir boş satır kalsın.update'in sonunda incoming = incoming.filter(...) satırının altına bir boş satır bırak ve dalga sonu bloğunu yaz.Beceriler: Oyun durumları