Atölye › Tetris Tarzı Bloklar › 28/32. adım

Adil bir parça torbası

Ne yapıyoruz

Her parçayı ötekilerden bağımsız rastgele seçmek ortalamada adildir ama o anda değil. Arada bir üst üste dört S gelir ya da 30 tur boyunca uzun I hiç gelmez; oyuncu kötü oyundan değil kötü şanstan kaybeder.

Modern oyunlar 7'li torba kullanır: yedi parçanın her birinden birer tane torbaya koy, torbayı karıştır, boşalana kadar ondan dağıt; boşalınca yeniden doldur. Her parça her yedili grupta tam bir kez gelir. Sıra yine tahmin edilemez, ama kuraklık da sel de olmaz. Bir iskambil destesini karıştırıp dağıtmak gibi.

```js
let bag

  bag = []

// The "7-bag": deal all seven pieces in a random order, then shuffle a new bag.
function takeFromBag() {
  if (bag.length === 0) {
    bag = [0, 1, 2, 3, 4, 5, 6]
    for (let i = bag.length - 1; i > 0; i--) {
      const j = Math.floor(Math.random() * (i + 1))
      ;[bag[i], bag[j]] = [bag[j], bag[i]]
    }
  }
  return SHAPES[bag.pop()].map((row) => [...row])
}

  const shape = takeFromBag()
```

Ne işe yarıyor

Sıra sende

  1. let piece satırının altına let bag yaz; newGame içinde board = ... satırının altına bag = [] yaz.
  2. randomShape fonksiyonunu sil; yerine yorum satırını ve takeFromBag fonksiyonunu yaz.
  3. spawn içinde randomShape() yerine takeFromBag() yaz.
  4. Çalıştır ve parçaları izle: yedi parçada her biri bir kez.

Beceriler: Diziler ve nesneler, Oyun durumları

Tüm adımlar

  1. Kuyu
  2. Sayı satırlarından tahta
  3. Bir hücre çiz
  4. Bütün tahtayı çiz
  5. Sayı renktir
  6. Parça küçük bir ızgaradır
  7. Şekil listesi
  8. Yedi parçanın hepsi
  9. Kuyunun içine sığıyor mu?
  10. Bloklar yolu kapatır
  11. Önce dene, sonra taşı
  12. Oklarla oynat
  13. Matrisi döndür
  14. Yukarı okla döndür
  15. Duvar itmesi
  16. Kendiliğinden düşüş
  17. Tepede rastgele bir parça
  18. Yere otur ve kilitlen
  19. Oyunu başlatan tek fonksiyon
  20. Yığın tepeye ulaşınca
  21. Ekranda Game Over
  22. Yeniden oyna
  23. Dolu satırları sil
  24. Satırlara puan
  25. Yan panel
  26. Seviyeler
  27. Her seviyede daha hızlı
  28. Adil bir parça torbası
  29. Sıradaki parça
  30. Bırak gitsin
  31. Hayalet parça
  32. Kendin yap: parçayı beklet