Atölye › Bilardo › 19/33. adım

Cebe girdi

Ne yapıyoruz

Bir topun merkezi bir cebin merkezine POCKET_R'den daha çok yaklaşınca top cebe düşer. Her adımdan sonra yalnız düşmeyen topları tutacağız.

Bir diziyi gezerken ondan eleman silmek bilinen bir hatadır: döngü silinen her elemandan sonrakini atlar. Bu yüzden silmek yerine filter ile yeni bir dizi kuracağız.

Güzel bir ayrıntı: köşedeki top iki bant tarafından cebin 13 piksel yakınına itilir ve düşer. Orta ceplerde yalnız bir bant var; top cebe ancak yandan ~12 piksel içinde gelirse düşer. Orta cepler, gerçek masadaki gibi daha dar; bunun için hiç özel kural yazmadık.

```js
function pocketed(b) {
  return POCKETS.some(([px, py]) => Math.hypot(b.x - px, b.y - py) < POCKET_R)
}

  balls = balls.filter((b) => !pocketed(b))
```

Ne işe yarıyor

Sıra sende

  1. collide fonksiyonunun altına bir boş satır bırak ve pocketed fonksiyonunu yaz.
  2. step'in sonunda çift döngüsü satırının altına filter satırını yaz.
  3. Çalıştır ve bir topu cebe sok!

Beceriler: Çarpışma tespiti, Diziler ve nesneler

Tüm adımlar

  1. Oda
  2. Masa
  3. İsteka topu
  4. Topları çiz
  5. Üçgen
  6. Topların numaraları
  7. Nişan çizgisi
  8. Nişanı çevir
  9. Vuruş bir hızdır
  10. Yuvarlan
  11. Sürtünme
  12. Bantlar
  13. Nişan ve yuvarlanma
  14. Yuvarlanırken nişanı gizle
  15. Vuruşları say
  16. Değen toplar
  17. İtişi değiş tokuş et
  18. Altı cep
  19. Cebe girdi
  20. Faul
  21. Kalan toplar
  22. Masayı temizle
  23. Gücü seç
  24. Güç çubuğu
  25. Sapan
  26. Basarak nişan al
  27. Geri çek ve bırak
  28. Daha küçük adımlar
  29. Vuruşu tahmin et
  30. Hayalet topu çiz
  31. Çarpılan top nereye gider
  32. Rekorun
  33. Kendin yap: iki oyuncu