async def validate_board(self, game: Game, move: GameMove, user: User) -> Game: """ Validate if the board to check if there are winners or if there is a tie. :param Game game: :param GameMove move: :param User user: :return Game: """ win_validations = await asyncio.gather( self.__validate_right_diagonal(game), self.__validate_left_diagonal(game), self.__validate_columns(game), self.__validate_rows(game), ) tasks = [asyncio.create_task(move.commit())] if True in win_validations: game.status = Game.STATUS_FINISHED game.winner = move.player user.victories += 1 tasks.append(asyncio.create_task( user.commit() )) elif await self.__validate_tie(game): game.status = Game.STATUS_TIE tasks.append(asyncio.create_task(game.commit())) await asyncio.gather(*tasks) return game
def create_single_player_game(self) -> Tuple: ensure_ai_user() player_one_id = self.create_player_one() data = {"players": [player_one_id]} game = Game(**data) loop = asyncio.get_event_loop() loop.run_until_complete(game.commit()) return game.pk.__str__(), player_one_id
def create_game(self) -> str: player_one_id = self.create_player_one() player_two_id = self.create_player_two() data = {"players": [player_one_id, player_two_id]} game = Game(**data) loop = asyncio.get_event_loop() loop.run_until_complete(game.commit()) return game.pk.__str__()