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))
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]))
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)