Atölye › Klondike Solitaire › 30/40. adım
Sürüklerken kartlar parmağı izlemeli. İki şey yapacağız:
Kartlar yığından aslında hiç çıkmıyor; yalnız başka bir yerde çiziliyor.
```js
const hidden = drag && drag.from === key ? drag.index : pile.length
// The stock, the waste and the foundations only need their top card.
const first = key[0] === 't' ? 0 : Math.max(0, hidden - 1)
for (let i = first; i < hidden; i++) drawCardAt(pile[i], x, cardY(key, i))
}
// The held cards follow the pointer, on top of everything.
if (drag) {
piles[drag.from].slice(drag.index).forEach((card, i) => drawCardAt(card, drag.x - drag.dx, drag.y - drag.dy + i * UP_STEP))
}
```const hidden = drag && drag.from === key ? drag.index : pile.length → bu yığında nereye kadar çizilecek:
kart tutuluyorsa ve bu, tutulan kartın yığınıysa, tutulan karta kadar (drag.index); değilse bütün kartlar.first ve for artık pile.length yerine hidden'a bakıyor.if (drag) { ... } → döngüden sonra, yani her şeyin üstüne:piles[drag.from].slice(drag.index) → tutulan kart ve üstündekiler..forEach((card, i) => ...) → her biri için bir kez çalışır; i o kartın dizideki sırası (0, 1, 2...).drag.x - drag.dx, drag.y - drag.dy → işaretçiden tutma farkını çıkarınca kartın köşesi bulunur.+ i * UP_STEP → alttaki kartlar birer açık kart payı aşağıda.draw içinde, döngünün // The stock, the waste ... yorumunun üstüne const hidden = ... satırını yaz.first satırında pile.length - 1'i hidden - 1 yap; for satırında i < pile.length'i i < hidden yap.}'sinin altına yorum ile if (drag) { ... } bloğunu yaz.Beceriler: Canvas üzerine çizim, Klavye ve fare girdisi
← İşaretçiyi izle İstediğin yere bırak →