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