Atölye › Pac-Man Tarzı Labirent Kovalamaca › 4/42. adım

Yem kümesi

Ne yapıyoruz

Harita değişmez, ama yemler yenecek. O yüzden yemleri haritadan okuyup ayrı, değişebilen bir yerde tutacağız.

Her yemi döşemesinin adıyla tanıyacağız: sütun ve sıra, araya virgül: '8,15'. Bu adları bir Set'e (küme) koyacağız. Küme bir torba gibidir: içinde bir şey ya vardır ya yoktur, aynı şey iki kez girmez. "Bu döşemede yem var mı?" (has), "şu yemi çıkar" (delete), "kaç yem kaldı?" (size) soruları çok hızlı cevaplanır.

Güç yemleri (o) ayrı bir kümede: powers.

```js
let pellets // keys of the tiles that still have a pellet
let powers // keys of the tiles that still have a power pellet

const key = (col, row) => col + ',' + row

function fillPellets() {
  pellets = new Set()
  powers = new Set()
  MAZE.forEach((line, row) => {
    ;[...line].forEach((ch, col) => {
      if (ch === '.') pellets.add(key(col, row))
      if (ch === 'o') powers.add(key(col, row))
    })
  })
}

function reset() {
  fillPellets()
}

reset()
```

Ne işe yarıyor

Sıra sende

  1. const COLS = ... satırının altına bir boş satır bırakıp iki değişkeni, key'i, fillPellets'i ve reset'i yaz (aralarında birer boş satır; draw'dan önce de bir boş satır kalsın).
  2. En alttaki requestAnimationFrame(loop) satırının üstüne reset() yaz.
  3. Çalıştır. Ekran değişmez; yemleri bir sonraki adımda çizeceğiz.

Beceriler: Diziler ve nesneler, Oyun durumları

Tüm adımlar

  1. Metin olarak labirent
  2. Oyun döngüsü
  3. Duvarları çiz
  4. Yem kümesi
  5. Yemleri çiz
  6. Oyuncu
  7. Nereden yürünür?
  8. Hareket edenin hafızası
  9. Bir karelik hareket
  10. Her karede hareket
  11. Önceden basılan dönüşler
  12. Döşemeler arasında kay
  13. Anında geri dön
  14. Telefonda kaydırma
  15. Yemleri ye
  16. Skoru göster
  17. Labirenti bitir
  18. Kırmızı bir hayalet
  19. Hayalet geri dönmez
  20. Hayalet yürür
  21. Hayalet seni avlar
  22. Evde dört hayalet
  23. Evden birer birer
  24. Dağıl mı, kovala mı?
  25. Her hayalet köşesine
  26. Pembe önünü keser
  27. Turuncu utangaç
  28. Camgöbeği kırmızıyla çalışır
  29. İlk tuşu bekle
  30. Oyuncuya başlamasını söyle
  31. Üç can
  32. Yakalandın!
  33. Oyun bitti
  34. Yeniden oyna
  35. Hayaletleri korkut
  36. Güç yemleri çalışır
  37. Korkmuş hayalet yavaş dolaşır
  38. Korkmuş hayaleti ye
  39. Mavi, sonra yanıp sönen
  40. Zorlaşan bölümler
  41. Kalıcı en iyi skor
  42. Kendin yap: yavaş tünel