Atölye › Klondike Solitaire › 11/40. adım

Sütunları kaydır

Ne yapıyoruz

Gerçek masada sütunun kartları üst üste biner ama her birinin bir kısmı görünür: kapalı kartın yalnız 8 piksellik ince kenarı, açık kartın ise okunacak kadar 22 pikseli.

Bir kartın y'sini bulmak için üstündeki kartları sayacağız: her kapalı kart 8, her açık kart 22 piksel aşağı iter. Bu işi cardY (kartın y'si) yapacak.

```js
const DOWN_STEP = 8 // how much of a face-down card shows under the next one
const UP_STEP = 22

// The y of card `index` in a tableau column: face-down cards overlap more than face-up ones.
function cardY(key, index) {
  if (key[0] !== 't') return TOP_Y
  let y = TAB_Y
  const pile = piles[key]
  for (let i = 0; i < index; i++) y += pile[i].up ? UP_STEP : DOWN_STEP
  return y
}

    for (let i = first; i < pile.length; i++) drawCardAt(pile[i], x, cardY(key, i))
```

Ne işe yarıyor

Sıra sende

  1. const TAB_Y = ... satırının altına DOWN_STEP ve UP_STEP satırlarını yaz.
  2. pileX fonksiyonunun altına bir boş satır bırak ve yorumuyla birlikte cardY fonksiyonunu yaz.
  3. draw içinde drawCardAt(pile[i], x, key[0] === 't' ? TAB_Y : TOP_Y) kısmındaki son parçayı (key[0] === 't' ? TAB_Y : TOP_Y) sil, yerine cardY(key, i) yaz.
  4. Çalıştır: sütunlar artık merdiven gibi aşağı iniyor; kapalı kartların ince mavi kenarları görünüyor.

Beceriler: Fonksiyonlar, Canvas üzerine çizim

Tüm adımlar

  1. Yeşil masa
  2. Bir kart çiz
  3. Kartın yüzü
  4. Kırmızı ve siyah
  5. 52 kartlık deste
  6. Karıştır
  7. Yığınlar tek nesnede
  8. Yedi sütunu dağıt
  9. Her yığına bir yer
  10. Yığınları masaya koy
  11. Sütunları kaydır
  12. Boş yerlere çerçeve
  13. Bir kart çevir
  14. Boşluk kart çevirir
  15. Desteyi yeniden kullan
  16. İşaretçinin altında ne var?
  17. Sütunda bir karta dokunmak
  18. Desteye dokun
  19. Kural 1: sütuna dizmek
  20. Kural 2: temele dizmek
  21. Kurala göre taşı
  22. Açığa çıkan kartı çevir
  23. Kartın gideceği yeri bul
  24. Kartı tut
  25. Dokun ve taşı
  26. Hamle sayacı
  27. Hamleleri say
  28. Kartı nereden tuttun?
  29. İşaretçiyi izle
  30. Tutulan kartları işaretçide çiz
  31. İstediğin yere bırak
  32. Boş sütuna papaz bırak
  33. Saat
  34. Kazanmak
  35. Kazandın!
  36. Yeni oyun
  37. En iyi süre
  38. Masanın fotoğrafları
  39. Geri al
  40. Kendin yap: kendiliğinden bitir