Atölye › Candy Crush Tarzı Üçlü Eşleştirme › 19/29. adım
Mücevherler hâlâ bir anda yerlerine ışınlanıyor. Düşmeyi göstermek için bir çizim hilesi kullanacağız: tahta verisi yine bir anda değişir, ama her mücevher yeni yerinin kaç piksel üstünden geldiğini hatırlar ve o kadar yukarıda çizilir.
Bunu drop (düşüş) adında, tahtayla aynı boyda ikinci bir tabloda tutuyoruz. İki satır düşen mücevher 96 (2 × 48)
ile başlar; yeni gelen mücevherler tahtanın üstünden.
```js
let drop // drop[row][col]: how many pixels above its place a gem is still drawn
drop = board.map((row) => row.map(() => 0))
board[write][c] = board[r][c]
drop[write][c] = (write - r) * SIZE
write--
}
for (let r = write; r >= 0; r--) {
board[r][c] = randomGem()
drop[r][c] = (write + 1) * SIZE
}
ctx.arc(x + SIZE / 2, y + SIZE / 2 - drop[r][c], SIZE / 2 - 6, 0, Math.PI * 2)
```drop = board.map((row) => row.map(() => 0)) → map her eleman için yeni bir değer üretip yeni bir liste yapar.
Dıştaki her satır için, içteki her hücre için 0: tahta boyunda, her yeri 0 olan bir ızgara.drop[write][c] = (write - r) * SIZE → r. satırdan write. satıra inen mücevher write - r satır düştü; her
satır 48 piksel. Hiç düşmeyen mücevherde write - r 0'dır.drop[r][c] = (write + 1) * SIZE → sütuna write + 1 yeni mücevher geliyor; hepsi o kadar satır yukarıdan, yani
tahtanın üstünden başlar.y + SIZE / 2 - drop[r][c] → çizimde mücevheri drop kadar yukarıda göster.let matched ... satırının altına let drop ... yaz.reset içinde en sona drop = board.map(...) satırını yaz.collapse içinde board[write][c] = board[r][c] satırının altına ilk drop satırını yaz; yeni mücevher döngüsünü
süslü paranteze alıp içine ikinci drop satırını yaz.draw içinde ctx.arc(...) satırında y + SIZE / 2 yerine y + SIZE / 2 - drop[r][c] yaz.Beceriler: Oyun durumları, Diziler ve nesneler