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)
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)
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)
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