Atölye › Hafıza Kartları › 20/25. adım
Oyunun bir sonu olmalı: bütün kartlar eşleşince kazanırsın. Tahta kararacak ve ortada You found them all! (hepsini
buldun!), kaç hamlede bitirdiğin ve Click to play again (tekrar oynamak için tıkla) yazacak.
Ayrı bir won = true değişkeni tutmak yerine cevabı kartlardan her seferinde hesaplayan küçük bir won()
fonksiyonu yazarız. Neden? Her fazladan değişken, doğru her yerde güncellenmesi gereken bir şey daha demek. İyi bir
kural: olabildiğince az şey sakla, gerisini hesapla.
```js
function won() {
return cards.every((card) => card.matched)
}
if (won()) {
ctx.fillStyle = 'rgba(0, 0, 0, 0.6)'
ctx.fillRect(0, 0, canvas.width, canvas.height)
ctx.fillStyle = 'white'
ctx.font = 'bold 30px sans-serif'
ctx.fillText('You found them all!', canvas.width / 2, 190)
ctx.font = '20px sans-serif'
ctx.fillText('in ' + moves + ' moves', canvas.width / 2, 230)
ctx.font = '16px sans-serif'
ctx.fillText('Click to play again', canvas.width / 2, 270)
}
```cards.every((card) => card.matched) → every ("her biri"): hepsi eşleştiyse true, bir tanesi bile
eşleşmediyse false.if (won()) { ... } → draw'un sonunda: kazandıysak üstüne sonucu çiz.'rgba(0, 0, 0, 0.6)' → yarı saydam renk: ilk üç sayı kırmızı, yeşil, mavi (0–255), dördüncüsü saydamlık (0
görünmez, 1 tam dolu). %60 siyah bir perde; kartlar arkadan hafifçe görünür.'in ' + moves + ' moves' → 'in 12 moves'. Boşluklara dikkat.canvas.width / 2 → yatayda orta (200). textAlign hâlâ 'center', bu yüzden yazılar ortalanır.function flip(card) { satırının üstüne won fonksiyonunu ve bir boş satır yaz.draw içinde kartları çizen döngünün kapanan } işaretinin altına bir boş satır bırak ve if (won()) bloğunu
fonksiyonun son } işaretinin üstüne yaz.Beceriler: Oyun durumları, Canvas üzerine çizim
← Hamleleri ve eşleri göster Tekrar oyna →