Atölye › Zelda Tarzı Zindan › 7/22. adım
Kahramanın ortası bir boşluktan odanın dışına çıkınca yandaki oda yüklensin ve kahraman karşı kenarda belirsin; kapıdan geçiyormuş gibi.
```js
// Walking out through a gap in the wall: into the next room, on the opposite side.
const cx = player.x + SIZE / 2
const cy = player.y + SIZE / 2
if (cx < 0 || cx > COLS * T || cy < 0 || cy > ROWS * T) {
const rx = room.rx + (cx < 0 ? -1 : cx > COLS * T ? 1 : 0)
const ry = room.ry + (cy < 0 ? -1 : cy > ROWS * T ? 1 : 0)
if (cx < 0) player.x += COLS * T - 4
if (cx > COLS * T) player.x -= COLS * T - 4
if (cy < 0) player.y += ROWS * T - 4
if (cy > ROWS * T) player.y -= ROWS * T - 4
enter(rx, ry)
return
}
```cx, cy → kahramanın ortası. Oda COLS * T = 480 piksel genişliğinde, ROWS * T = 352 piksel yüksekliğinde.rx - 1), sağdan çıktıysa bir sağ oda; üst ve alt için de aynısı.player.x += COLS * T - 4 → neredeyse bir oda boyu (4 piksel eksik) karşıya: kahraman öbür kenarın hemen içine
düşer, hemen geri çıkmaz.return → bu kareyi bitir; yeni oda bir sonraki karede oynanır.update'in sonuna, bir boş satırdan sonra oda geçiş bloğunu yaz. Çalıştır ve sağdaki boşluktan çık.
Beceriler: Oyun durumları