Atölye › Hafıza Kartları › 12/25. adım

Adil bir karıştırma

Ne yapıyoruz

Şu an eşler yan yana duruyor (elma, muz, ... sonra yine elma, muz...). Kartları karıştırmalıyız.

İnternette deck.sort(() => Math.random() - 0.5) gibi tek satırlık bir yöntem çok görülür ama yanlıdır: bazı sıralar diğerlerinden sık çıkar; oyuncu eşlerin nereye düştüğünü öğrenebilir. Doğrusu Fisher–Yates: sondan başa yürü; her konumu, kendisi ve öncekiler arasından rastgele seçilen bir konumla yer değiştir. Kâğıt destesinden sondan başa kart çekip yer değiştirmek gibi.

```js
// Fisher–Yates: every order is equally likely.
function shuffle(items) {
  for (let i = items.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1))
    ;[items[i], items[j]] = [items[j], items[i]]
  }
  return items
}

  const deck = shuffle([...SYMBOLS, ...SYMBOLS])
```

Ne işe yarıyor

Sıra sende

  1. function newGame() { satırının üstüne yorum satırını, shuffle fonksiyonunu ve bir boş satır yaz.
  2. newGame içindeki deste satırını const deck = shuffle([...SYMBOLS, ...SYMBOLS]) yap.
  3. Çalıştır. Görmek için faceUp: false'u geçici olarak true yapabilirsin; sonra geri al.

Beceriler: Diziler ve nesneler, Fonksiyonlar

Tüm adımlar

  1. Canvas'ı ve kalemi al
  2. Masa
  3. Bir kart
  4. Bir sıra kart
  5. Dört sıra
  6. Her meyveden iki tane
  7. Kendini bilen kartlar
  8. Kartın köşesi
  9. Kartları listeden çiz
  10. Durmadan çiz
  11. Kartın ön yüzü
  12. Adil bir karıştırma
  13. Bir noktada hangi kart var?
  14. Tıkla, kartı çevir
  15. Kurallar için tek yer
  16. Aynı anda iki kart
  17. Eş mi değil mi
  18. Hamleleri say
  19. Hamleleri ve eşleri göster
  20. Bütün eşler bulundu
  21. Tekrar oyna
  22. Peşinden giden bir sayı
  23. Yarı yolda yüz değiştir
  24. Dönüşü canlandır
  25. Kendin yap: en iyi oyunun