Atölye › Tetris Tarzı Bloklar › 18/32. adım
Parça artık düşemiyorsa yere oturmuştur. O zaman kilitlenir: dolu hücreleri tahtaya kopyalanır ve artık ayrı bir parça değil, yığının bir parçasıdır. Tepede yeni bir parça belirir.
Sayının aynı zamanda renk olması burada işe yarıyor: yalnız sayıları kopyalamak, tahtanın her bloğun rengini hatırlaması için yetiyor.
```js
function lock() {
piece.shape.forEach((cells, r) => {
cells.forEach((value, c) => {
if (value) board[piece.y + r][piece.x + c] = value
})
})
spawn()
}
function softDrop() {
if (!tryMove(0, 1)) lock()
}
softDrop()
```function lock() { → drawShape'teki gibi matrisi gez; ama her dolu hücreyi çizmek yerine sayısını tahtaya
yaz: board[piece.y + r][piece.x + c] = value. Matristeki yer + parçanın yeri = tahtadaki yer.spawn() → kilitlenen parçanın yerine yenisi.function softDrop() { → yumuşak düşüş: if (!tryMove(0, 1)) lock() → bir satır inmeyi dene; olmadıysa
(tryMove false döndürdüyse) parça yere değmiştir: kilitle. tryMove'un cevap vermesi burada işe yaradı.loop içinde tryMove(0, 1) yerine softDrop().tryRotate fonksiyonunun altına bir boş satır bırakıp lock ve softDrop fonksiyonlarını yaz.loop içinde tryMove(0, 1) satırını softDrop() yap.Beceriler: Oyun durumları, Diziler ve nesneler
← Tepede rastgele bir parça Oyunu başlatan tek fonksiyon →