Atölye › Zelda Tarzı Zindan › 16/22. adım
Odadan çık ve geri dön: kalp yine orada, çünkü enter odayı baştan yüklüyor. Dünya neyin alındığını hatırlamalı.
Alınan her kareye '0,0,11,7' gibi bir ad veriyoruz (oda ve kare) ve bir Set'te tutuyoruz; enter o kareleri
zemin yapıyor.
```js
let taken // what has been picked up or opened in each room, so it stays that way
taken = new Set()
// Load a room: its tiles (minus what was already taken), and fresh enemies on its e tiles.
function enter(rx, ry) {
room = { rx, ry }
tiles = ROOMS[ry][rx].map((line, row) =>
[...line].map((ch, col) => (taken.has(rx + ',' + ry + ',' + col + ',' + row) ? '.' : ch === 'P' || ch === 'e' ? '.' : ch)),
)
const id = room.rx + ',' + room.ry + ',' + col + ',' + row
taken.add(id)
```Set → tekrarsız bir topluluk; has bir ad içinde mi diye sorar, add ekler.enter artık row ve col'u da alıyor: her karenin adını kurmak için. Satır uzadığı için üç satıra bölündü.taken.has(...) ? '.' : ... → alınmışsa zemin; değilse önceki kural.let tiles altına taken, reset'in en üstüne taken = new Set() yaz.enter'ın tiles satırını üç satırlık yeni hâliyle değiştir; enter'ın üstüne yorumu yaz.update'te here satırının altına id satırını, tiles[row][col] = '.' altına taken.add(id) yaz.Beceriler: Oyun durumları, Diziler ve nesneler
← Anahtarlar ve kalpler Kilitli kapı →