def generate_move_with_filter(board, use_pattern, check_selfatari): """ Arguments --------- check_selfatari: filter selfatari moves? Note that even if True, this filter only applies to pattern moves use_pattern: Use pattern policy? """ if board.last_move != None: # AtariCapture move atari_capture_move = GoBoardUtil_Go3.generate_atari_capture_move(board) if atari_capture_move: return atari_capture_move # AtariDefense move atari_defense_moves = GoBoardUtil_Go3.generate_atari_defense_moves(board) if len(atari_defense_moves) > 0: return random.choice(atari_defense_moves) if use_pattern: moves = GoBoardUtil.generate_pattern_moves(board) move = GoBoardUtil.filter_moves_and_generate(board, moves, check_selfatari) if move: return move return GoBoardUtil.generate_random_move(board, board.current_player,True)
def playGame(board, color, **kwargs): """ modified to use custom policy """ komi = kwargs.pop('komi', 0) limit = kwargs.pop('limit', 1000) random_simulation = kwargs.pop('random_simulation', True) use_pattern = kwargs.pop('use_pattern', True) check_selfatari = kwargs.pop('check_selfatari', True) if kwargs: raise TypeError('Unexpected **kwargs: %r' % kwargs) for _ in range(limit): if random_simulation: move = GoBoardUtil.generate_random_move(board, color, True) else: #this uses custom move policy for simulation now moves, _ = Gm.generate_moves(board, use_pattern, check_selfatari) move = GoBoardUtil.filter_moves_and_generate( board, moves, check_selfatari) isLegalMove = board.move(move, color) assert isLegalMove if board.end_of_game(): break color = GoBoardUtil.opponent(color) winner, _ = board.score(komi) return winner