Atölye › Mario Tarzı Platform › 6/37. adım
Oyuncu nerede başlayacak? Bölüm yazısındaki P harfinin olduğu yerde. loadLevel (bölümü yükle) fonksiyonu bölümün
her döşemesini bir kez gezecek ve P'yi bulunca oraya oyuncuyu koyacak: 24×30'luk bir kutu.
Bölüm yazısı hiç değişmeyen bir plan (kroki) olarak kalır; oyuncu ise o plandan kurulan canlı durum. Bu ayrım ileride bölümü yeniden başlatmayı çok kolaylaştıracak. Bu adımda ekranda bir şey değişmeyecek.
```js
let player
function loadLevel() {
LEVEL.forEach((line, row) => {
for (let col = 0; col < COLS; col++) {
const x = col * TILE
const y = row * TILE
if (line[col] === 'P') player = { x: x + 4, y: y + 2, w: 24, h: 30 }
}
})
}
loadLevel()
```let player → oyuncu kutusu; loadLevel dolduracak.LEVEL.forEach((line, row) => { ... }) → forEach ("her biri için") dizinin her elemanı için fonksiyonu bir kez
çağırır: line o satırın yazısı, row sırası (0, 1, 2...). Sayan bir for döngüsünün kısa hâli gibi.for (let col = 0; col < COLS; col++) → o satırın her harfi için.const x = col * TILE, const y = row * TILE → döşemenin sol üst köşesi (piksel).if (line[col] === 'P') player = { x: x + 4, y: y + 2, w: 24, h: 30 } → P'yi bulunca oyuncuyu kur. Oyuncu 24
genişliğinde, döşeme 32: soldan 4 içeri koyunca ortalanır. 2 aşağı koyunca alt kenarı 2 + 30 = 32'de, yani döşemenin
tam dibinde: alttaki zeminin üstünde duruyor.loadLevel() → döngü başlamadan önce bölümü bir kez yükle.function solidAt(x, y) { satırının üstüne let player yaz ve bir boş satır bırak.function draw() { satırının üstüne loadLevel fonksiyonunu yaz; aralarında bir boş satır kalsın.requestAnimationFrame(loop) satırının hemen üstüne loadLevel() yaz.Beceriler: Diziler ve nesneler, Oyun durumları
← Kutu bir şeye değiyor mu? Oyuncuyu çiz →