public void Solve(GoBoard goBoard, Color color) { Board = goBoard; Color = color; SafetySolver.Solve(goBoard, color); ProtectedLiberitiesLeft = GoBoardHelper.GetProtectedLiberites(Board, color); }
protected static int GetEndGameMove(GoBoard goBoard, Color playerToMove) { Random lRandom = new Random(); List <int> lList = GoBoardHelper.GetMovesInOpponentsTerritory(goBoard, playerToMove); if (lList.Count != 0) { return(lList[lRandom.Next(lList.Count - 1)]); } return(CoordinateSystem.PASS); }
public void PrioritizeMoves(MoveList moves, Color playerToMove) { List <int>[] lProtected = new List <int> [2]; lProtected[0] = GoBoardHelper.GetProtectedLiberites(Board, playerToMove); lProtected[1] = GoBoardHelper.GetProtectedLiberites(Board, playerToMove.Opposite); List <int>[] lNeighborsOfProtected = new List <int> [2]; lNeighborsOfProtected[0] = GoBoardHelper.GetNeighbors(Board, lProtected[0]); lNeighborsOfProtected[1] = GoBoardHelper.GetNeighbors(Board, lProtected[1]); foreach (int lMove in moves) { moves.SetValue(lMove, GetMovePriority(lMove, playerToMove, lProtected[0].Contains(lMove), lProtected[1].Contains(lMove), lNeighborsOfProtected[0].Contains(lMove), lNeighborsOfProtected[1].Contains(lMove))); } }