Atölye › Puzzle Bobble Tarzı Balon Atıcı › 16/31. adım

Altı komşu

Ne yapıyoruz

Aynı renkte değen balonları bulmak için her hücrenin komşularını bilmeliyiz. Bal peteği gibi dizilmiş bir ızgarada bir hücrenin altı komşusu var: iki yanında, iki üstünde, iki altında.

Püf nokta: tek satırlar yarım balon sağa kaymış. Bu yüzden üst ve alt komşuların hangi sütunlarda olduğu satırın çift mi tek mi olduğuna bağlı.

```js
const inGrid = (r, c) => r >= 0 && r < ROWS && c >= 0 && c < cols(r)

// The six cells around (r, c). Odd rows are shifted right, so their neighbours above and below are at c and c + 1;
// even rows' are at c - 1 and c.
function neighbors(r, c) {
  const shift = r % 2 === 0 ? -1 : 0
  return [
    [r, c - 1], [r, c + 1],
    [r - 1, c + shift], [r - 1, c + shift + 1],
    [r + 1, c + shift], [r + 1, c + shift + 1],
  ].filter(([nr, nc]) => inGrid(nr, nc))
}
```

Ne işe yarıyor

Sıra sende

  1. const cellPos = ... satırının üstüne inGrid satırını yaz.
  2. cellPos satırının altına bir boş satır bırakıp yorumu ve neighbors fonksiyonunu yaz.
  3. Çalıştır. (Ekranda değişiklik yok; komşuları sonraki adımlarda kullanacağız.)

Beceriler: Diziler ve nesneler

Tüm adımlar

  1. Gece göğü
  2. Bir balon
  3. Hücrelerden bir ızgara
  4. Izgarayı çiz
  5. İç içe oturan balonlar
  6. Atıcı
  7. Yukarı nişan al
  8. Oklarla çevir
  9. İşaretçiyle nişan al
  10. Ateş!
  11. Uç
  12. Duvarlardan sek
  13. Bir şeye değiyor mu?
  14. Izgaraya otur
  15. Daha küçük adımlar
  16. Altı komşu
  17. Taşan boya (flood fill)
  18. Üç tane olunca patla
  19. Düşen balonlar
  20. Asılı kalmayanlar düşsün
  21. Skoru göster
  22. Yalnız işe yarayan renkler
  23. Atışları say
  24. Tavan iniyor
  25. Kazan ya da kaybet
  26. Tehlike çizgisi
  27. Bitiş mesajı
  28. Yeniden oyna
  29. En iyi skor
  30. Noktalı kılavuz
  31. Kendin yap: balonları değiştir