Example #1
0
class MinimaxPlayer:
    def __init__(self, game, depth, breadths, evaluate, tag=None):
        assert depth == len(breadths)
        self.game = game
        self.depth = depth
        self.evaluate = evaluate
        self.tag = tag
        self.minimax = Minimax(game, depth, breadths, evaluate)

    def choose_move(self):
        self.minimax.run_search()
        move = self.minimax.choose_move()
        self.minimax.reset_tree()
        return move

    def make_move(self, move):
        self.game.make_move(move)

    def __repr__(self):
        my_repr = ''
        my_repr += 'Minimax Player with depth {} ' \
                   'and evaluation function {}'.format(self.depth, self.evaluate.__name__)
        if self.tag:
            my_repr += ' tag: {}.'.format(self.tag)
        return my_repr