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

Izgaraya otur

Ne yapıyoruz

Balonun durduğu yer neredeyse hiçbir zaman tam bir hücre değildir. Bu yüzden en yakın boş hücreye oturtacağız: snap (yapış). Bu tek adım, serbest uçuşu yeniden ızgaraya çevirir; bundan sonraki her şey (eşleşme, düşme) yalnız hücrelerle uğraşacak.

attach (tak) rengi o hücreye yazacak. Şimdilik tek işi bu; ileride patlatmayı da o yapacak.

```js
// The empty cell closest to where the bubble stopped.
function snap(x, y) {
  let nearest = null
  for (let r = 0; r < ROWS; r++) {
    for (let c = 0; c < cols(r); c++) {
      if (grid[r][c] >= 0) continue
      const p = cellPos(r, c)
      const d = Math.hypot(p.x - x, p.y - y)
      if (!nearest || d < nearest.d) nearest = { r, c, d }
    }
  }
  return nearest
}

function attach(r, c, color) {
  grid[r][c] = color
}

  if (touches(shot.x, shot.y)) {
    const cell = snap(shot.x, shot.y)
    attach(cell.r, cell.c, shot.color)
    shot = null
  }
```

Ne işe yarıyor

Sıra sende

  1. function update() { satırının üstüne yorumuyla snap ve attach fonksiyonlarını yaz; her birinin altında bir boş satır kalsın.
  2. update içinde duvar bloğunun kapanan }'sinin altına if (touches(...)) { ... } bloğunu yaz.
  3. Çalıştır ve ateş et: balon diğerlerine yapışmalı!

Beceriler: Çarpışma tespiti, 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