Atölye › Klondike Solitaire › 11/40. adım
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))
```DOWN_STEP = 8, UP_STEP = 22 → kapalı ve açık kartın altından ne kadarının görüneceği.if (key[0] !== 't') return TOP_Y → !== "eşit değil": sütun olmayan yığınlar hep üst sırada.let y = TAB_Y → sütunun başından başla.const pile = piles[key] → o sütunun kartları.for (let i = 0; i < index; i++) y += pile[i].up ? UP_STEP : DOWN_STEP → bu karttan önceki her kart için y'ye
ekle: açıksa 22, kapalıysa 8. += "üstüne ekle".return y → toplanan y.draw içinde y artık cardY(key, i)'den geliyor.const TAB_Y = ... satırının altına DOWN_STEP ve UP_STEP satırlarını yaz.pileX fonksiyonunun altına bir boş satır bırak ve yorumuyla birlikte cardY fonksiyonunu yaz.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.Beceriler: Fonksiyonlar, Canvas üzerine çizim
← Yığınları masaya koy Boş yerlere çerçeve →