Пример #1
0
    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
Пример #2
0
 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
Пример #3
0
 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__()