Atölye › 15 Bulmacası › 22/27. adım

Akıcı kayma

Ne yapıyoruz

Şimdi kaymayı çiziyoruz. Kayan taşı kendi karesine çizmeyeceğiz; onu eski karesiyle yeni karesi arasında bir yere çizeceğiz.

Fikir: t = animasyonun ne kadarı bitti (0 başta, 1 sonda). Yol boyunca yer: başlangıç + (bitiş − başlangıç) × t. t 0,5 iken tam yarı yol. Buna doğrusal interpolasyon (lerp) denir; oyunlarda her yerde kullanılır.

```js
tiles.forEach((number, i) => {
  if (number === 0 || (slide && number === slide.tile)) return
  drawTile(number, squareX(i), squareY(i))
})
// The sliding tile is drawn part of the way from its old square to its new one.
if (slide) {
  const t = slide.frame / SLIDE_FRAMES
  const x = squareX(slide.from) + (squareX(slide.to) - squareX(slide.from)) * t
  const y = squareY(slide.from) + (squareY(slide.to) - squareY(slide.from)) * t
  drawTile(slide.tile, x, y)
}
```

Ne işe yarıyor

Sıra sende

  1. draw içindeki forEach'te if (number === 0) return satırını if (number === 0 || (slide && number === slide.tile)) return yap.
  2. forEach bloğunu kapatan }) satırının altına yorum satırını ve if (slide) { ... } bloğunu yaz.
  3. Çalıştır, bir taş kaydır: boşluğa süzülerek gitmeli.

Beceriler: Oyun döngüsü, Canvas üzerine çizim

Tüm adımlar

  1. Tek listede bir tahta
  2. Tuval ve kalem
  3. Masayı boya
  4. Çizen bir fonksiyon
  5. Satır ve sütun
  6. Her kare nerede
  7. Bir taş çiz
  8. Taşın üstündeki sayı
  9. Bütün taşlar
  10. Tekrar tekrar çiz
  11. N'den çözülmüş tahta
  12. Komşular
  13. Taş kaydır
  14. Taşa tıkla
  15. Ok tuşları
  16. Hamleleri say
  17. Gerçek kaydırmalarla karıştır
  18. Hangi tahtalar çözülür?
  19. Çözüldü mü?
  20. Kaymayı hatırla
  21. Kareleri say
  22. Akıcı kayma
  23. Çözüldü!
  24. Kazandığını göster
  25. Yeniden oyna
  26. Kırılacak bir rekor
  27. Kendin yap: bir süre sayacı