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

İstilacılar

Ne yapıyoruz

Beş sıra, her sırada dokuz istilacı; her sıranın kendi rengi var. Her istilacı hangi sırada olduğunu ve hâlâ yaşayıp yaşamadığını hatırlıyor; yalnız yaşayanlar çiziliyor. İç içe iki döngüyle 45 istilacıyı kuruyoruz.

```js
const ROWS = 5
const COLS = 9
const INVADER_W = 28
const INVADER_H = 20
const SPACING_X = 44
const SPACING_Y = 36
const ROW_COLORS = ['#f472b6', '#a78bfa', '#a78bfa', '#34d399', '#34d399']

let 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 })
  }
}

function alive() {
  return invaders.filter((invader) => invader.alive)
}

  for (const invader of alive()) {
    ctx.fillStyle = ROW_COLORS[invader.row]
    ctx.fillRect(invader.x, invader.y, invader.w, invader.h)
  }
```

Ne işe yarıyor

Sıra sende

  1. COOLDOWN satırının altına istilacı sabitlerini ve ROW_COLORS'u yaz.
  2. let lastShot satırının altına invaders listesini ve onu dolduran iç içe döngüleri yaz.
  3. shoot fonksiyonunun üstüne alive fonksiyonunu yaz; draw'da arka plandan sonra istilacı döngüsünü yaz.
  4. Çalıştır.

Beceriler: Diziler ve nesneler, Döngüler

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