Atölye › Sokoban › 8/29. adım

Bölümü ortala

Ne yapıyoruz

Bölüm sol üst köşeye sıkışmış. Onu tuvalin ortasına alacağız. Yöntem: bölümün enini ve boyunu ölç, tuvalden artan boşluğu ikiye böl; yarısı sola, yarısı sağa.

Üstte (bölüm numarası ve hamle sayacı için) ve altta (ipucu yazısı için) biraz yer de ayıracağız: TOP ve BOTTOM.

```js
const TOP = 48 // room for the level number and the move counter
const BOTTOM = 40 // room for the hint line

  // Center the level on the canvas.
  const rows = LEVELS[level].length
  const cols = Math.max(...LEVELS[level].map((line) => line.length))
  const ox = (canvas.width - cols * TILE) / 2
  const oy = TOP + (canvas.height - TOP - BOTTOM - rows * TILE) / 2
  const tile = (x, y, color, inset = 0) => {
    ctx.fillStyle = color
    ctx.fillRect(ox + x * TILE + inset, oy + y * TILE + inset, TILE - inset * 2, TILE - inset * 2)
  }
```

Ne işe yarıyor

Sıra sende

  1. const TILE = 48 satırının altına TOP ve BOTTOM satırlarını yaz.
  2. draw içinde const tile = ... satırının üstüne yorum satırını ve dört satırı yaz.
  3. tile içindeki ctx.fillRect(...)'in ilk iki sayısının başına ox + ve oy + ekle.
  4. Çalıştır: duvar çerçevesi tuvalin ortasına gelmeli.

Beceriler: Canvas üzerine çizim

Tüm adımlar

  1. Yazıyla çizilmiş bir bölüm
  2. Tuval ve kalem
  3. Depo zemini
  4. Çizen bir fonksiyon
  5. Her kareye bir ad
  6. Duvarları oku
  7. Duvarları çiz
  8. Bölümü ortala
  9. Hedefler
  10. Kutular
  11. Oyuncu
  12. İki bölüm daha
  13. Bir adım
  14. Oklarla yürü
  15. Kutular yolu kapatır
  16. Kutu it
  17. Hedefteki kutu yeşile döner
  18. Çözüldü!
  19. Sıradaki bölüme
  20. Hangi bölüm?
  21. Alttaki satır
  22. Hamleleri say
  23. Oyunun fotoğrafı
  24. Her hamleden önce fotoğraf
  25. Geri al
  26. Baştan başla
  27. Her bölüm için bir rekor
  28. Rekoru göster
  29. Kendin yap: itmeleri say