Atölye › Tetris Tarzı Bloklar › 23/32. adım
Oyunun amacı: bir satırı tamamen doldurmak. Dolan satır kaybolur ve üstündeki her şey bir satır aşağı iner.
Blokları tek tek taşımak gerekiyormuş gibi görünür. Ama tahta satırlardan oluşan bir liste olduğu için iş iki liste işlemi:
Kalan satırlar sıralarını koruduğu için üsttekiler kendiliğinden "düşer". Verin için doğru şekli seçmek, zor bir problemi birkaç satıra indirdi.
```js
function clearLines() {
const kept = board.filter((row) => row.some((cell) => cell === 0))
const cleared = ROWS - kept.length
if (cleared === 0) return
board = [...Array.from({ length: cleared }, emptyRow), ...kept]
}
clearLines()
```row.some((cell) => cell === 0) → some "listede bu koşulu sağlayan en az bir eleman var mı?" diye sorar. Yani
"bu satırda en az bir boş hücre var mı?"board.filter(...) → filter listeden yalnız koşulu sağlayanları tutan yeni bir liste yapar: dolu olmayan
satırlar, eski sıralarıyla.const cleared = ROWS - kept.length → 20'den kalan satır sayısını çıkar: kaç satır doluydu.if (cleared === 0) return → hiç dolmadıysa hemen çık.board = [...Array.from({ length: cleared }, emptyRow), ...kept] → ... (yayma) bir listenin elemanlarını buraya
döker: önce cleared kadar yeni boş satır, arkasından tutulan satırlar. Toplam yine 20.clearLines() (lock içinde) → parça tahtaya yazıldıktan sonra, yenisi gelmeden önce.clearLines fonksiyonunu function lock() { satırının üstüne yaz; altında bir boş satır kalsın.lock içinde spawn() satırının üstüne clearLines() yaz.Beceriler: Diziler ve nesneler
← Yeniden oyna Satırlara puan →