Atölye › Space Invaders Tarzı › 17/21. adım

Dalga bir fonksiyonda

Ne yapıyoruz

Bütün istilacılar ölünce yeni bir dalga gelsin. Bunun için diziliş kurmayı bir fonksiyona taşıyoruz: spawnWave (dalga doğur). Mermileri ve bombaları da temizleyip yürüyüşü baştan başlatıyor. Oyun onu başta bir kez çağırıyor. Oyun aynı görünüyor; değişen, kodun düzeni.

```js
let bullets
let invaders
let bombs
let dir // +1 marching right, -1 marching left
let lastStep
let lastShot = -COOLDOWN

function spawnWave() {
  invaders = []
  for (let row = 0; row < ROWS; row++) {
    for (let col = 0; col < COLS; col++) {
      invaders.push({ x: 40 + col * SPACING_X, y: 60 + row * SPACING_Y, w: INVADER_W, h: INVADER_H, row, alive: true })
    }
  }
  bullets = []
  bombs = []
  dir = 1
  lastStep = now
}

spawnWave()
```

Ne işe yarıyor

Sıra sende

  1. let bullets = [] satırından let lastStep = 0 satırına kadar olan kısmı sil; yerine kısa listeyi yaz (sıra değişti: lastShot en sona geldi).
  2. overlaps fonksiyonunun üstüne spawnWave fonksiyonunu yaz.
  3. En alttaki requestAnimationFrame(loop) satırının üstüne spawnWave() yaz. Çalıştır.

Beceriler: Fonksiyonlar

Tüm adımlar

  1. Gemi
  2. Oyun döngüsü
  3. Gemiyi oynat
  4. Ekranda kal
  5. Ateş
  6. Mermiler uçuyor
  7. Kısa bir dolum
  8. İstilacılar
  9. Yürüyüş
  10. Vurdun!
  11. Puan
  12. Karşılık veriyorlar
  13. Bombalar düşüyor
  14. Canlar
  15. Oyun bitti
  16. En iyi puan
  17. Dalga bir fonksiyonda
  18. Yeniden oyna
  19. Dalgalar
  20. Gittikçe hızlanan
  21. Kendin yap: fazladan can