Atölye › Mario Tarzı Platform › 4/37. adım
Oyuncunun yaptığı her şey aynı soruyu soracak: bu nokta katı bir döşemenin içinde mi? Yürürken önündeki duvar,
düşerken ayağının altındaki zemin... Hepsini tek bir fonksiyon cevaplayacak: solidAt (şurada katı mı?).
Önce pikseli döşemeye çeviririz. Sonra bölümün dışını da kararlaştırırız, çünkü oyuncu kenarlara ulaşacak:
```js
function solidAt(x, y) {
const col = Math.floor(x / TILE)
const row = Math.floor(y / TILE)
if (col < 0 || col >= COLS) return true // invisible walls at both ends of the level
if (row < 0 || row >= ROWS) return false // open sky above, bottomless pits below
const tile = LEVEL[row][col]
return tile === '#' || tile === 'B'
}
```Math.floor(x / TILE) → pikseli sütuna çevirir: 100 / 32 = 3.125 → Math.floor küsuratı atar → 3.
y için aynısı satırı verir.if (col < 0 || col >= COLS) return true → sütun bölümün solunda veya sağındaysa: katı (görünmez duvar).if (row < 0 || row >= ROWS) return false → satır bölümün üstünde veya altındaysa: hava.const tile = LEVEL[row][col] → bölümün içindeysek o yerdeki harf.return tile === '#' || tile === 'B' → zemin veya tuğla ise true, değilse false. Karşılaştırmanın sonucu doğrudan
cevap olur.function draw() { satırının üstüne solidAt fonksiyonunu yaz; aralarında bir boş satır kalsın. Çalıştır:
ekran aynı, kontroller yeşil.
Beceriler: Çarpışma tespiti, Fonksiyonlar
← Döşemeleri çiz Kutu bir şeye değiyor mu? →