fix: address piece generation logic issue

This commit is contained in:
2021-06-08 11:12:09 -04:00
parent da6f5ef706
commit c1fe951b15

View File

@@ -8,35 +8,40 @@ from util.ConfigurationManager import ConfigurationManager
"""
class PieceGenerator:
__pieces = []
__bucket = []
@classmethod
def get_piece(cls, position):
if len(cls.__bucket) == 0:
cls.__generate_bucket()
if len(cls.__pieces) == 0:
for _ in range(7):
cls.__pieces.append(Piece(cls.__get_piece_shape(), position, cls.__get_piece_color()))
return Piece(cls.__get_piece_shape(cls.__bucket.pop()), position, cls.__get_piece_color())
return cls.__pieces.pop()
@classmethod
def __generate_bucket(cls):
piece_types = list(range(7))
while len(cls.__bucket) != 7:
random_number = random.randint(0, 6 - len(cls.__bucket))
cls.__bucket.append(piece_types.pop(random_number))
def __get_piece_shape():
random_number = random.randint(0, 6)
if random_number == 0:
def __get_piece_shape(piece_number):
if piece_number == 0:
return Piece.I_SHAPE
if random_number == 1:
if piece_number == 1:
return Piece.J_SHAPE
if random_number == 2:
if piece_number == 2:
return Piece.L_SHAPE
if random_number == 3:
if piece_number == 3:
return Piece.O_SHAPE
if random_number == 4:
if piece_number == 4:
return Piece.S_SHAPE
if random_number == 5:
if piece_number == 5:
return Piece.T_SHAPE
if random_number == 6:
if piece_number == 6:
return Piece.Z_SHAPE
return None
def __get_piece_color():
random_number = random.randint(1, 3)
return ConfigurationManager.configuration["color"]["base-" + str(random_number)]