diff --git a/tetris/entity.py b/tetris/entity.py index 7840ac6..3ea660f 100644 --- a/tetris/entity.py +++ b/tetris/entity.py @@ -124,7 +124,7 @@ class Piece(Entity): tile_size = ConfigurationManager.get("engine", "tile-size") # ghost piece - for square in self._get_ghost_points(well, stack): + for square in self._get_ghost_piece_points(well, stack): pygame.draw.polygon(surface, pygame.Color("#FFFFFF"), square, max(tile_size // 6, 1)) # TDOD change white to yaml super().draw(surface) @@ -176,31 +176,6 @@ class Piece(Entity): self.points = self.previous_points self.center = self.previous_center - def _mimic_move(self, vector: Tuple) -> List: - mimic_points = copy.deepcopy(self.points) - - for square in mimic_points: - for vertex in square: - vertex[0] += vector[0] - vertex[1] += vector[1] - - return mimic_points - - # TODO re work functuon - def _mimic_move_p(self, vector: Tuple, points: Tuple) -> List: - mimic_points = copy.deepcopy(points) - - for square in mimic_points: - for vertex in square: - vertex[0] += vector[0] - vertex[1] += vector[1] - - return mimic_points - - def _play_piece_set_sound(self) -> None: - piece_set_sound_file = ConfigurationManager.get("sound", "piece-set") - self.piece_set_sound.play(mixer.Sound(piece_set_sound_file)) - def _get_points(self, shape: Tuple, position: Tuple) -> List: tile_size = ConfigurationManager.get("engine", "tile-size") @@ -248,19 +223,36 @@ class Piece(Entity): return True + def _mimic_move(self, vector: Tuple) -> List: + mimic_points = copy.deepcopy(self.points) + + for square in mimic_points: + for vertex in square: + vertex[0] += vector[0] + vertex[1] += vector[1] + + return mimic_points + + def _play_piece_set_sound(self) -> None: + piece_set_sound_file = ConfigurationManager.get("sound", "piece-set") + self.piece_set_sound.play(mixer.Sound(piece_set_sound_file)) + def _entity_is_below(self, entity: Entity) -> bool: tile_size = ConfigurationManager.get("engine", "tile-size") mimic_points = self._mimic_move((0, tile_size)) return entity and entity._collide(mimic_points) - # TODO rework function - def _get_ghost_points(self, well: Well, stack: "Stack") -> List: + def _get_ghost_piece_points(self, well: Well, stack: "Stack") -> List: tile_size = ConfigurationManager.get("engine", "tile-size") prior_points = [] - current_points = self.points + current_points = copy.deepcopy(self.points) + while not well._collide(current_points) and not stack._collide(current_points): - prior_points = current_points - current_points = self._mimic_move_p((0, tile_size), current_points) + prior_points = copy.deepcopy(current_points) + for square in current_points: + for vertex in square: + vertex[1] += 1 * tile_size + return prior_points # shape attributes