예제 #1
0
    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()
예제 #2
0
    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()
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
 def on_player_clicked(self, player: Player) -> bool:
     if not self._tile.is_lock():
         self._tile.set_color(player.color())
         self._tile.lock()