Atölye › Klondike Solitaire › 39/40. adım
Şimdi fotoğrafları geri yükleyelim. undo (geri al) history'nin son fotoğrafını alır ve masayı ona çevirir.
Yığın bu iş için biçilmiş kaftan: en son yapılan, ilk geri alınır. Z'ye art arda basarak oyunda adım adım geri gidebilirsin. Kazandıktan sonra geri alma yok.
```js
function undo() {
if (!history.length || won) return
piles = JSON.parse(history.pop())
moves += 1
}
if (event.key === 'z' || event.key === 'Z') undo()
else if (event.key === ' ') flipStock()
ctx.fillText('Best ' + (best ? best + 's' : '-') + ' Z undo', canvas.width - LEFT, 24)
```if (!history.length || won) return → geçmiş boşsa veya oyun kazanılmışsa bir şey yapma.history.pop() → son fotoğrafı yığından çıkarır.JSON.parse(...) → yazıyı yeniden nesneye, dizilere ve kartlara çevirir: yepyeni bir masa. Bir hamlenin açtığı
kart bile, hiç özel kod yazmadan, yeniden kapalı döner; çünkü fotoğrafta kapalıydı.moves += 1 → geri almak da bir hamle sayılır (hile olmasın).keydown içinde ilk satır → küçük veya büyük z geri alır. Eski Boşluk satırı artık else if ile başlıyor.' Z undo' → oyuncu tuşu öğrensin.const save = ... satırının altına bir boş satır bırak ve undo fonksiyonunu yaz.keydown dinleyicisinde Boşluk satırının üstüne Z satırını yaz; Boşluk satırının başındaki if'i else if yap.draw içindeki 'Best ' + ... yazısına + ' Z undo' ekle.Beceriler: Diziler ve nesneler, Oyun durumları
← Masanın fotoğrafları Kendin yap: kendiliğinden bitir →