def swap_first_tile(self, current_player: Player): if self._board.move_count() == 1 and not self._board.is_swapped(): first_tile: Tile = self._board.last_move() tile_controler = TileController(first_tile) tile_controler.set_color(current_player.color()) self._board.swapped()
def undo(self, current_player: Player): number_moves: int = self._board.move_count() if number_moves > 0 and self._board.is_current(): last_tile: Tile = self._board.last_move() tile_controler = TileController(last_tile) if self._board.is_swapped() and self._board.move_count() == 1: tile_controler.set_color(current_player.color()) self._board.unswapped() else: self._board.decrement_move_count() tile_controler.reset() self._board.not_current()
def _draw_winning_labels(self, current_player: Player): label: Font = Font(TITLE_FONT, MEDIUM_TEXT) label_surface: Surface = label.render( 'Game Over!!', True, BLACK ) label_rect: Rect = label_surface.get_rect() label_rect.center = (87 + 50, self._height - 50) self._screen.blit(label_surface, label_rect) player_label: Font = Font(TITLE_FONT, LARGE_TEXT) player_label_surface: Surface = player_label.render( f'{current_player.name()} Wins!!', True, RED_TILE if current_player.color() == Color.RED else BLUE_TILE ) player_label_rect: Rect = player_label_surface.get_rect() player_label_rect.center = (self._width / 2, self._height - 150) self._screen.blit(player_label_surface, player_label_rect)
def _draw_game_labels(self, current_player: Player): label: Font = Font(MAIN_FONT, MEDIUM_TEXT) label_surface: Surface = label.render( 'Turn: ', True, BLACK ) label_rect: Rect = label_surface.get_rect() label_rect.center = ((label_rect.width / 2) + 50, self._height - 50) self._screen.blit(label_surface, label_rect) player_label: Font = Font(TITLE_FONT, MEDIUM_TEXT) player_label_surface: Surface = player_label.render( current_player.name(), True, RED_TILE if current_player.color() == Color.RED else BLUE_TILE ) plauer_label_rect: Rect = player_label_surface.get_rect() plauer_label_rect.center = ( (plauer_label_rect.width / 2) + 50 + label_rect.width, self._height - 50 ) self._screen.blit(player_label_surface, plauer_label_rect)
def on_player_clicked(self, player: Player) -> bool: if not self._tile.is_lock(): self._tile.set_color(player.color()) self._tile.lock()