Atölye › Sokoban › 6/29. adım
Şimdi yazıyı okuyacağız: bölümün her satırını, satırdaki her harfi gezip ne olduğuna bakacağız. Satırın sırası
y (satır), harfin sırası x (sütun) olur. Bu adımda sadece duvarları (#) topluyoruz; kalanlar sonraki
adımlarda.
Duvarları bir Set (küme) içinde tutacağız. Küme bir liste gibidir ama her değeri bir kez tutar ve "şu var mı?"
sorusunu anında cevaplar.
```js
let level = 0
let walls
function loadLevel(index) {
level = index
walls = new Set()
LEVELS[level].forEach((line, y) => {
;[...line].forEach((ch, x) => {
if (ch === '#') walls.add(key(x, y))
})
})
}
loadLevel(0)
```let level = 0 → şu anki bölümün sıra numarası. Sayma 0'dan başlar: LEVELS[0] ilk bölüm.let walls → duvarların kümesi. let "değeri sonradan değişebilen" ad demek.function loadLevel(index) → index bir parametre: hangi bölüm yüklensin.walls = new Set() → boş bir küme yapar. Her yüklemede temiz başlarız.LEVELS[level].forEach((line, y) => { ... }) → forEach listenin her elemanı için fonksiyonu çalıştırır: line
satırın yazısı ('#@$.#'), y onun sıra numarası (0, 1, 2).[...line] → yazıyı harflerine dağıtıp bir listeye koyar: [...'#@#39;] → ['#', '@', '#39;].forEach((ch, x) => ...) → satırdaki her harf (ch) ve sütun numarası (x).; → bir güvenlik işareti: satır [ ile başlayınca JavaScript onu bir önceki satıra yapıştırmaya kalkar;
; "önceki satır burada bitti" der.if (ch === '#') walls.add(key(x, y)) → harf duvarsa karenin adını kümeye ekle. === "tam olarak eşit mi?"loadLevel(0) → ilk bölümü yükle (draw()'dan önce).const key = ... satırının üstüne let level = 0 ve let walls satırlarını yaz; key ile arada bir boş satır
kalsın.key satırının altına bir boş satır bırakıp loadLevel fonksiyonunu yaz.draw() satırının üstüne loadLevel(0) yaz.Beceriler: Diziler ve nesneler, Oyun durumları
← Her kareye bir ad Duvarları çiz →