Atölye › Tetris Tarzı Bloklar › 9/32. adım
Sağa-sola gitmek, döndürmek, düşmek, yere oturmak, kaybetmek... Oyunun bütün kuralları tek bir soruya iner:
bu şekil bu yere sığar mı? Bunu bir kez, bir fonksiyonda cevaplarsak gerisi kolaylaşır: fits (sığar).
Bu adımda sorunun ilk yarısı: şeklin her dolu hücresi kuyunun yan duvarlarının içinde ve zeminin üstünde mi? Ekranda bir şey değişmeyecek; doğru çalıştığını kontroller söyleyecek.
```js
function fits(shape, x, y) {
for (let r = 0; r < shape.length; r++) {
for (let c = 0; c < shape[r].length; c++) {
if (!shape[r][c]) continue
const col = x + c
const row = y + r
if (col < 0 || col >= COLS || row >= ROWS) return false
}
}
return true
}
```function fits(shape, x, y) { → şekli ve yeri parametre olarak alır, piece'i doğrudan okumaz. Böylece bir
şeyi değiştirmeden önce "ya sağa gitseydi?", "ya döndürseydik?" diye sorabiliriz.for → matrisin her satırını (r) ve her sütununu (c) gezer. shape.length satır sayısı, shape[r].length
o satırın uzunluğu.if (!shape[r][c]) continue → ! "değil" demek: hücre boşsa atla. continue döngünün bu turunu bırakıp
sonrakine geçer. Matrisin boş hücreleri hiçbir şeye çarpmaz.const col = x + c, const row = y + r → bu hücrenin kuyudaki yeri.col < 0 || col >= COLS || row >= ROWS → || "veya": sol duvarın solunda veya sağ duvarın ötesinde veya
zeminin altında. (>= büyük ya da eşit; son sütun 9, son satır 19.)return false → fonksiyonu hemen bitirir ve "hayır" der; tek bir hücre sığmıyorsa gerisine bakmaya gerek yok.return true → bütün hücreler geçtiyse "evet". true/false evet/hayır değerleridir.let piece = ... satırının altına bir boş satır bırakıp fits fonksiyonunu yaz.Beceriler: Çarpışma tespiti, Fonksiyonlar
← Yedi parçanın hepsi Bloklar yolu kapatır →