Exemple #1
0
class MagicGame(object):
    def __init__(self, game_config_dir: Path, player_1_deck_file: Path,
                 player_2_deck_file: Path):

        logger.info("Initializing new Magic game.")
        self.game_config = GameConfiguration(game_config_dir=game_config_dir)

        logger.info(
            "Player 1 will be playing the deck {}".format(player_1_deck_file))
        logger.info(
            "Player 2 will be playing the deck {}".format(player_2_deck_file))

        self.player_1 = Player(deck_file=player_1_deck_file,
                               hp=self.game_config.players_life,
                               name="Player_1")
        self.player_2 = Player(deck_file=player_2_deck_file,
                               hp=self.game_config.players_life,
                               name="Player_2")

        self.game_engine = GameEngine(player_1=self.player_1,
                                      player_2=self.player_2)

    def start_game(self):
        fmt = logging.Formatter('[ Start game ] %(message)s ', '%p')
        logger.handlers[0].setFormatter(fmt)

        self.game_engine.start_game(game_name=self.game_config.name)

        # Shuffle the decks
        if self.game_config.shuffle_decks:
            self.player_1.deck.shuffle_deck()
            self.player_2.deck.shuffle_deck()

        # Each player draws the first hand
        self.player_1.draw_card(self.game_config.draw_initial)
        self.player_2.draw_card(self.game_config.draw_initial)

        while not self.game_engine.game_ended:
            turn = Turn(game_engine=self.game_engine,
                        game_config=self.game_config)
            turn.start()

            self.game_engine.change_player_focus()
            self.game_engine.turns_count += 1