fix: address piece generation logic issue
This commit is contained in:
@@ -8,35 +8,40 @@ from util.ConfigurationManager import ConfigurationManager
|
|||||||
"""
|
"""
|
||||||
class PieceGenerator:
|
class PieceGenerator:
|
||||||
|
|
||||||
__pieces = []
|
__bucket = []
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_piece(cls, position):
|
def get_piece(cls, position):
|
||||||
|
if len(cls.__bucket) == 0:
|
||||||
|
cls.__generate_bucket()
|
||||||
|
|
||||||
if len(cls.__pieces) == 0:
|
return Piece(cls.__get_piece_shape(cls.__bucket.pop()), position, cls.__get_piece_color())
|
||||||
for _ in range(7):
|
|
||||||
cls.__pieces.append(Piece(cls.__get_piece_shape(), 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():
|
def __get_piece_shape(piece_number):
|
||||||
random_number = random.randint(0, 6)
|
if piece_number == 0:
|
||||||
|
|
||||||
if random_number == 0:
|
|
||||||
return Piece.I_SHAPE
|
return Piece.I_SHAPE
|
||||||
if random_number == 1:
|
if piece_number == 1:
|
||||||
return Piece.J_SHAPE
|
return Piece.J_SHAPE
|
||||||
if random_number == 2:
|
if piece_number == 2:
|
||||||
return Piece.L_SHAPE
|
return Piece.L_SHAPE
|
||||||
if random_number == 3:
|
if piece_number == 3:
|
||||||
return Piece.O_SHAPE
|
return Piece.O_SHAPE
|
||||||
if random_number == 4:
|
if piece_number == 4:
|
||||||
return Piece.S_SHAPE
|
return Piece.S_SHAPE
|
||||||
if random_number == 5:
|
if piece_number == 5:
|
||||||
return Piece.T_SHAPE
|
return Piece.T_SHAPE
|
||||||
if random_number == 6:
|
if piece_number == 6:
|
||||||
return Piece.Z_SHAPE
|
return Piece.Z_SHAPE
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
def __get_piece_color():
|
def __get_piece_color():
|
||||||
random_number = random.randint(1, 3)
|
random_number = random.randint(1, 3)
|
||||||
return ConfigurationManager.configuration["color"]["base-" + str(random_number)]
|
return ConfigurationManager.configuration["color"]["base-" + str(random_number)]
|
||||||
|
|||||||
Reference in New Issue
Block a user