Atölye › Sokoban › 9/29. adım
Sırada hedefler: kutuların gideceği yerler. Onlar da hiç yer değiştirmez, bu yüzden onları da bir kümede tutarız.
Dikkat: üç harf hedef demek. . boş bir hedef; * üstünde kutu olan bir hedef; + üstünde oyuncu duran bir hedef.
Hedefleri turuncu, küçük bir nokta olarak çizeceğiz.
```js
let goals
goals = new Set()
if (ch === '.' || ch === '*' || ch === '+') goals.add(key(x, y))
for (const k of goals) {
const [x, y] = k.split(',').map(Number)
tile(x, y, '#f59e0b', 18)
}
```let goals → hedeflerin kümesi; loadLevel içinde goals = new Set() ile her yüklemede boşalır.ch === '.' || ch === '*' || ch === '+' → || "veya": harf bu üçünden biriyse hedef.if; duvar satırının altına gelir. Bir harf birden çok şey olabileceği için (* hem kutu hem
hedef) her soru ayrı bir if.tile(x, y, '#f59e0b', 18) → turuncu, 18 piksel içeri çekilmiş: 48 − 36 = 12 piksellik küçük bir nokta.let walls satırının altına let goals yaz.loadLevel içinde walls = new Set() satırının altına goals = new Set() yaz.if (ch === '#') ... satırının altına hedef satırını yaz.draw içinde duvar döngüsünün kapanan }'sinin altına hedef döngüsünü yaz.Beceriler: Oyun durumları, Canvas üzerine çizim