Example #1
0
    def get_move(self, board, toplay):
        moves = []
        cboard = board.copy()

        captureMove = GoBoardUtil.captures_atari(board, board.last_move,
                                                 toplay)

        if (captureMove):
            moves.append(captureMove)
        else:
            captureDefense = GoBoardUtil.defends_atari(board, toplay)
            if (len(captureDefense) > 1 or captureDefense[0] != None):
                for i in captureDefense:
                    if i == None:
                        continue
                    moves.append(i)
            else:
                emptyPoints = board.get_empty_points()
                for p in emptyPoints:
                    if not GoBoardUtil.filleye_filter(board, p, toplay):
                        moves.append(p)

        if not moves:  # pass move only, no need to simulate
            return None

        moveWins = []
        for move in moves:
            wins = self.simulateMove(board, cboard, move, toplay)
            moveWins.append(wins)
        writeMoves(board, moves, moveWins, self.num_simulation)
        return select_best_move(board, moves, moveWins)
Example #2
0
 def get_move(self, board, toplay):
     cboard = board.copy()
     emptyPoints = board.get_empty_points()
     moves = []
     for p in emptyPoints:
         if not GoBoardUtil.filleye_filter(board, p, toplay):
             moves.append(p)
     if not moves:  # pass move only, no need to simulate
         return None
     moves.append(None)  # None for Pass
     moveWins = []
     for move in moves:
         wins = self.simulateMove(board, cboard, move, toplay)
         moveWins.append(wins)
     #writeMoves(board, moves, moveWins, self.num_simulation)
     return select_best_move(board, moves, moveWins)
Example #3
0
 def get_move(self, board, toplay):
     cboard = board.copy()
     #emptyPoints = board.get_empty_points()
     policy_moves, type_of_move = GoBoardUtil.generate_all_policy_moves(
         board, self.pattern, self.selfatari)
     moves = []
     for p in policy_moves:
         if not GoBoardUtil.filleye_filter(board, p, toplay):
             moves.append(p)
     if not moves:  # pass move only, no need to simulate
         return None
     moves.append(None)  # None for Pass
     moveWins = []
     for move in moves:
         wins = self.simulateMove(board, cboard, move, toplay)
         moveWins.append(wins)
     writeMoves(board, moves, moveWins, self.num_simulation)
     return select_best_move(board, moves, moveWins)
Example #4
0
 def find_all_features(board):
     """
     Find all move's features on the board
     """
     legal_moves = GoBoardUtil.generate_legal_moves(board, board.current_player)
     filter_moves=[]
     for m in legal_moves:
         if GoBoardUtil.filleye_filter(board, m, board.current_player) !=True:
             filter_moves.append(m)
     features = {}
     features["PASS"] = []
     for m in filter_moves:
         features[m] = []
     Feature.find_pass_features(features, board)
     Feature.find_full_board_features(features, board)
     Feature.find_dist_prev_move_features(features, board, filter_moves)
     Feature.find_line_pos_features(features, board, filter_moves)
     for m in filter_moves:
         Feature.find_pattern_feature(features, board, m)
     return features