Atölye › Klondike Solitaire › 10/40. adım
Kartları sonunda masada göreceğiz! draw her yığını tek tek gezecek ve kartlarını çizecek: üst sıra (deste, açılan
kartlar, temeller) TOP_Y'de, yedi sütun daha aşağıda, TAB_Y'de.
Deste gibi yığınlarda yalnız en üstteki kart görünür, altındakileri çizmeye gerek yok. Sütunlarda ise hepsini çiziyoruz. Test kartının işi bitti, onu siliyoruz.
```js
const TOP_Y = 40 // the stock, the waste and the foundations
const TAB_Y = 136 // the seven tableau columns
for (const [key, pile] of Object.entries(piles)) {
const x = pileX(key)
// The stock, the waste and the foundations only need their top card.
const first = key[0] === 't' ? 0 : Math.max(0, pile.length - 1)
for (let i = first; i < pile.length; i++) drawCardAt(pile[i], x, key[0] === 't' ? TAB_Y : TOP_Y)
}
```TOP_Y = 40, TAB_Y = 136 → üst sıranın ve sütunların y'si.Object.entries(piles) → nesneyi [ad, değer] çiftlerinden oluşan bir listeye çevirir:
[['stock', [...]], ['waste', []], ['f0', []], ...].for (const [key, pile] of ...) → her çift için bir kez döner; çiftin adını key'e, kart dizisini pile'a koyar.
(Köşeli parantezle bir diziyi parçalarına ayırmaya dizi ayrıştırma denir.)const x = pileX(key) → bu yığının x'i.const first = key[0] === 't' ? 0 : Math.max(0, pile.length - 1) → çizime hangi karttan başlanacak: sütunsa
0'dan (hepsi), değilse yalnız son karttan. Math.max(0, ...) iki sayıdan büyüğünü seçer; boş yığında −1'e düşmeyi
önler.for (let i = first; i < pile.length; i++) drawCardAt(...) → kartları çiz. y: sütunsa TAB_Y, değilse TOP_Y.const COL = 64 ... satırının altına TOP_Y ve TAB_Y satırlarını yaz.draw içindeki test kartı satırını (drawCardAt({ rank: 12, ...) sil; yerine for döngüsünü yaz.Beceriler: Canvas üzerine çizim, Döngüler
← Her yığına bir yer Sütunları kaydır →