Atölye › Asteroids › 22/41. adım
Vurulan kaya kırılır: listeden çıkar; en küçük boy değilse aynı yerde bir küçük boydan iki yeni kaya doğar.
Her biri yeni bir makeAsteroid çağrısı olduğu için kendi rastgele yönüne fırlar. Büyük → iki orta → iki küçük → yok.
Bu kural oyunu oynadıkça zorlaştırır: yavaş bir büyük hedef, iki hızlı orta hedefe dönüşür. Bu adımda ekran değişmez; mermiyle bağlantıyı bir sonraki adımda kuracağız.
```js
function breakAsteroid(asteroid) {
asteroids = asteroids.filter((a) => a !== asteroid)
if (asteroid.size > 1) {
asteroids.push(makeAsteroid(asteroid.x, asteroid.y, asteroid.size - 1))
asteroids.push(makeAsteroid(asteroid.x, asteroid.y, asteroid.size - 1))
}
}
```asteroids.filter((a) => a !== asteroid) → "bu kaya olmayan her şeyi tut". !== "eşit değil" demek. filter
eski listeye dokunmaz, yeni bir liste yapar. Bir listede döngüyle gezerken aynı listeden öğe silmek bazı öğelerin
atlanmasına yol açan klasik bir hatadır; filter bu tuzaktan korur.if (asteroid.size > 1) → en küçük değilse.push → aynı yerde, bir küçük boydan iki yeni kaya.document.addEventListener('keydown', ... satırının üstüne breakAsteroid fonksiyonunu yaz; altında bir boş satır
kalsın. Çalıştır: ekran değişmez, kontroller yeşil olmalı.
Beceriler: Diziler ve nesneler, Oyun durumları
← İki daire ne zaman değer? Mermi kayayı vurur →