From af91918e7dca4b91864d155def5e064813ae98a1 Mon Sep 17 00:00:00 2001
From: kirbylife <kirbylife@protonmail.com>
Date: Sun, 4 Apr 2021 17:18:14 -0500
Subject: [PATCH] add a bag of pieces

---
 afutc/game.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/afutc/game.py b/afutc/game.py
index 8747701..9cb2d22 100644
--- a/afutc/game.py
+++ b/afutc/game.py
@@ -1,6 +1,7 @@
 import curses
 from _curses import error as CursesException
 from random import choice
+from random import random
 from threading import Thread
 from time import sleep
 
@@ -21,6 +22,9 @@ def catch(func, default=..., args=[], kwargs={}):
         else:
             return default
 
+def pouch():
+    while True:
+        yield from sorted(PIECES, key=lambda _: random())
 
 class Afutc:
     running = True
@@ -32,6 +36,7 @@ class Afutc:
         self.print = lambda x, color=0: stdscr.addstr(x,
                                                       curses.color_pair(color))
         self.input = stdscr.getkey
+        self.pouch = pouch()
         self.is_paused = False
         self.board = np.zeros(shape=(HEIGHT, WIDTH))
         self.current_move = np.zeros(shape=(HEIGHT, WIDTH))
@@ -133,12 +138,14 @@ class Afutc:
         # Generate a new piece
         self.current_move.fill(0.)
         if not isinstance(self.current_piece, np.ndarray):
-            self.current_piece = np.array(choice(PIECES))
+            # self.current_piece = np.array(choice(PIECES))
+            self.current_piece = np.array(next(self.pouch))
         else:
             self.current_piece = self.next_piece.copy()
         new_piece = self.current_piece.copy()
 
-        self.next_piece = np.array(choice(PIECES))
+        # self.next_piece = np.array(choice(PIECES))
+        self.next_piece = np.array(next(self.pouch))
 
         self.current_piece = new_piece.copy()
         position = self.board_center - (new_piece.shape[1] // 2)