def test_raise_exception_when_player_id_invalid(self):
        player1 = Player(1, 1, 0, Direction.up, 0, True, "Name")
        player2 = Player(2, 0, 0, Direction.up, 0, True, "Name")
        cells = [[Cell([player2]), Cell([player1])]]
        game = Game(2, 1, cells, [player1, player2], 1, True, datetime.now())

        with self.assertRaises(PlayerWithGivenIdNotAvailableException):
            game.get_player_by_id(100)
    def test_player_with_id_should_be_returned(self):
        player1 = Player(1, 0, 0, Direction.up, 0, True, "Name")
        player2 = Player(2, 1, 0, Direction.up, 0, True, "Name")
        cells = [[Cell([player1]), Cell([player2])]]
        game = Game(2, 1, cells, [player1, player2], 1, True, datetime.now())

        self.assertEqual(player1, game.get_player_by_id(1))
Пример #3
0
    def update(self, game: Game):
        """See base class."""
        if not self._interface_initialized:
            self._initialize_interface(game)

        print("Round : ", self.__round)
        self.__round += 1

        table_player_ids = []
        for row in range(len(game.cells)):
            row_cells = []
            for col in range(len(game.cells[0])):
                cell = game.cells[row][col]
                if cell.get_player_id() == 0:
                    row_cells.append(' ')
                else:
                    player = game.get_player_by_id(cell.get_player_id())
                    color = self._player_colors[self.__player_representation[
                        cell.get_player_id()]]
                    if player.x == col and player.y == row:
                        if player == game.you:
                            row_cells.append(colored("x", color))
                        else:
                            row_cells.append(colored("o", color))
                    else:
                        row_cells.append(
                            colored(
                                str(self.__player_representation[player.id]),
                                color))
            table_player_ids.append(row_cells)

        print(
            tabulate(table_player_ids, tablefmt="jira").replace(
                " ", "").replace("||", "| |").replace("||", "| |"))

        if not game.running:
            player = game.get_winner()
            if player is None:
                print("No winner in game.")
            else:
                print("Winner: Player " +
                      str(self.__player_representation[player.id]) + " (" +
                      player.name + "). Your player ID was " +
                      str(self.__player_representation[game.you.id]))
Пример #4
0
    def update(self, game: Game):
        """See base class."""
        if not self._interface_initialized:
            self._initialize_interface(game)

        if not game.running:
            player = game.get_winner()
            if player is None:
                print("No winner in game.")
            else:
                print("Winner: Player " + str(player.id) + " (" + player.name + "). Your player ID was " +
                      str(game.you.id) + ".")

        self.__screen.fill((0, 0, 0))  # black background
        for row in range(game.height):
            for col in range(game.width):
                self.__pygame.draw.rect(self.__screen,
                                        self.__get_player_color(game.cells[row][col]),
                                        (col * self.RECT_SIZE + col,
                                         row * self.RECT_SIZE + row,
                                         self.RECT_SIZE,
                                         self.RECT_SIZE))
                if game.cells[row][col].get_player_id() != 0:
                    player = game.get_player_by_id(game.cells[row][col].get_player_id())
                    if player.x == col and player.y == row:  # print head
                        border_width = 2
                        if player == game.you:
                            border_width = 4  # head of the own player has a smaller dot
                        self.__pygame.draw.rect(self.__screen,
                                                self._player_colors[0],
                                                (col * self.RECT_SIZE + col + border_width,
                                                 row * self.RECT_SIZE + row + border_width,
                                                 self.RECT_SIZE - (2 * border_width),
                                                 self.RECT_SIZE - (2 * border_width)))
        self.__pygame.display.update()
        self.__clock.tick(60)