Atölye › Puzzle Bobble Tarzı Balon Atıcı › 13/31. adım
Uçan balon bir şeye değdiği anda durmalı: tavana ya da ızgaradaki bir balona. İki balon, merkezleri arasındaki
uzaklık bir çaptan (2R) az olunca değer.
Biz 2R - 4 kullanacağız: biraz hoşgörülü. Böylece tam sığacak gibi görünen bir aralıktan balon gerçekten geçebilir.
Bu adımda yalnız soruyu cevaplayan fonksiyonu yazıyoruz: touches (değiyor mu).
```js
// Does a bubble at (x, y) touch the ceiling or a bubble in the grid?
function touches(x, y) {
if (y - R <= TOP) return true
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)
if (Math.hypot(p.x - x, p.y - y) < 2 * R - 4) return true
}
}
return false
}
```if (y - R <= TOP) return true → balonun tepesi (y - R) şeride ulaştıysa tavana değdi.Math.hypot(p.x - x, p.y - y) → iki merkez arasındaki uzaklık (Pisagor).< 2 * R - 4 → bir çaptan 4 piksel az: hoşgörülü değme.return false.function update() { satırının üstüne yorumuyla birlikte touches fonksiyonunu yaz; altında bir boş satır kalsın.
Çalıştır: oyun aynı; kontroller yeşil.
Beceriler: Çarpışma tespiti
← Duvarlardan sek Izgaraya otur →