Atölye › Klondike Solitaire › 17/40. adım
Sütunda kartlar üst üste bindiği için bir nokta birden çok kartın içine düşebilir. Hangisine dokunduk? Üstte görünene: yani en son çizilene.
Bu yüzden kartları sondan başa doğru deneyeceğiz; ilk tutan kart cevaptır. Örtülü bir kartın yalnız görünen ince kenarına dokunursan, üstündeki kartlar o noktayı kapsamadığı için o kart bulunur.
```js
if (key[0] === 't') {
for (let i = pile.length - 1; i >= 0; i--) {
const cy = cardY(key, i)
if (y >= cy && y <= cy + CH) return { key, index: i }
}
} else if (y >= TOP_Y && y <= TOP_Y + CH) return { key, index: pile.length - 1 }
```if (key[0] === 't') { → yığın bir sütunsa:for (let i = pile.length - 1; i >= 0; i--) → son karttan ilk karta doğru, geriye.const cy = cardY(key, i) → bu kartın üst kenarı.if (y >= cy && y <= cy + CH) return { key, index: i } → nokta kartın içindeyse cevap bu kart. İlk bulunan en üstteki.} else if (...) → sütun değilse, önceki adımdaki üst sıra kontrolü. else if "değilse, şu doğruysa" demek; artık
key[0] !== 't' yazmaya gerek yok.hit içindeki if (key[0] !== 't' && y >= TOP_Y ... satırını sil; yerine yeni altı satırı yaz. Çalıştır.
Beceriler: Çarpışma tespiti
← İşaretçinin altında ne var? Desteye dokun →