Exemple #1
0
        public static GTPInternalResponse GTPExSafe(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            Color lColor = new Color();

            if (!gtpCommand.GetParameter(0, ref lColor))
                return InvalidParameterResponse();

            string lMethod = string.Empty;

            if (gtpCommand.GetParameterCount() == 2)
                lMethod = gtpCommand.GetParameter(1);

            SafetySolverType lSafetySolverType = SafetySolverFactory.ToType(lMethod);

            int lCount = gtpGoBoard.Board.CountSafePoints(lColor, lSafetySolverType);

            return new GTPInternalResponse(true, lCount.ToString());
        }
Exemple #2
0
        public static GTPInternalResponse GTPSleep(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            int lSleepTime = 0;

            if (!gtpCommand.GetParameter(0, ref lSleepTime))
                return InvalidParameterResponse();

            Thread.Sleep(new TimeSpan(0,0,lSleepTime));

            return new GTPInternalResponse(true);
        }
Exemple #3
0
        public static GTPInternalResponse GTPTopMoves(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            Color lColor = new Color();

            if (!gtpCommand.GetParameter(0, ref lColor))
                return InvalidParameterResponse();

            return GTPTopMoves(gtpGoBoard, lColor);
        }
Exemple #4
0
        public static GTPInternalResponse GTPScoringSystem(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            string lString = gtpCommand.GetParameter(0);

            if (ScoreFactoryFactory.ToType(lString) == ScoreType.Unassigned)
                return InvalidParameterResponse();

            gtpGoBoard.ScoreInterface = ScoreFactoryFactory.CreateFactory(lString);

            return new GTPInternalResponse(true);
        }
Exemple #5
0
        public static GTPInternalResponse GTPSetStartPly(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            int lStartPly = 0;

            if (!gtpCommand.GetParameter(0, ref lStartPly))
                return InvalidParameterResponse();

            if (lStartPly <= 0)
                return InvalidParameterResponse();

            gtpGoBoard.SearchEngine.SearchOptions.StartPly = lStartPly;

            return new GTPInternalResponse(true);
        }
Exemple #6
0
        public static GTPInternalResponse GTPPonderOption(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            bool lPonder = false;

            if (gtpCommand.GetParameterCount() < 1)
                lPonder = true;
            else
                if (!gtpCommand.GetParameter(0, ref lPonder))
                    return InvalidParameterResponse();

            gtpGoBoard.SearchEngine.SearchOptions.PonderOnOpponentsTime = lPonder;

            if (!lPonder)
                gtpGoBoard.SearchEngine.StopSearch();

            return new GTPInternalResponse(true);
        }
Exemple #7
0
        public static GTPInternalResponse GTPRegMove(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            Color lColor = new Color();

            if (!gtpCommand.GetParameter(0, ref lColor))
                return InvalidParameterResponse();

            MoveList lMoveList = gtpGoBoard.SearchEngine.SimpleSearch(lColor);

            int lMove = lMoveList.GetBestMove();

            return new GTPInternalResponse(true, gtpGoBoard.Board.Coord.ToString(lMove));
        }
Exemple #8
0
        public static GTPInternalResponse GTPIsLegal(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 2)
                return MissingParametersResponse();

            Color lColor = new Color();

            if (!gtpCommand.GetParameter(0, ref lColor))
                return InvalidParameterResponse();

            string lPoint = gtpCommand.GetParameter(1);

            return new GTPInternalResponse(true, gtpGoBoard.Board.IsLegal(gtpGoBoard.At(lPoint), lColor) ? "1" : "0");
        }
Exemple #9
0
        public static GTPInternalResponse GTPKnownComand(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParameterResponse();

            return new GTPInternalResponse(gtpGoBoard.RegisteredCommands.ContainsKey(gtpCommand.GetParameter(0)));
        }
Exemple #10
0
        public static GTPInternalResponse GTPGoalSave(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            string lPoint = gtpCommand.GetParameter(0);

            gtpGoBoard.SearchEngine.GoalBase = new GoalSave(gtpGoBoard.Board, gtpGoBoard.At(lPoint));

            return new GTPInternalResponse(true);
        }
Exemple #11
0
        public static GTPInternalResponse GTPGoBoardSize(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParameterResponse();

            if (gtpCommand.GetParameterCount() > 1)
                return TooManyParameters();

            int lBoardSize = 0;

            if (!gtpCommand.GetParameter(0, ref lBoardSize))
                return InvalidParameterResponse();

            if (!((lBoardSize == 19) || (lBoardSize == 17) || (lBoardSize == 15) || (lBoardSize == 13) || (lBoardSize == 11) || (lBoardSize == 9) || (lBoardSize == 7) || (lBoardSize == 5)))
                return NotSupportedResponse();

            gtpGoBoard.Board.SetBoardSize(lBoardSize);
            gtpGoBoard.SearchEngine.GoalBase = null;

            return new GTPInternalResponse();
        }
Exemple #12
0
        public static GTPInternalResponse GTPGGUndo(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParameterResponse();

            int lUndos = 0;

            if (!gtpCommand.GetParameter(0, ref lUndos))
                return InvalidParameterResponse();

            if (lUndos <= 0)
                return InvalidParameterResponse();

            while (lUndos-- > 0)
                if (!gtpGoBoard.Board.CanUndo())
                    return new GTPInternalResponse(false, "unable to complete undo");
                else
                    gtpGoBoard.Board.Undo();

            return new GTPInternalResponse(true);
        }
Exemple #13
0
        public static GTPInternalResponse GTPFinalStatusList(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            string lString = gtpCommand.GetParameter(0).ToLower().Trim();

            SafetyFlag lSafetyFlag;

            switch (lString)
            {
                case "dead": lSafetyFlag = SafetyFlag.Dead; break;
                case "alive": lSafetyFlag = SafetyFlag.Alive; break;
                case "white_territory": lSafetyFlag = SafetyFlag.White | SafetyFlag.Territory; break;
                case "black_territory": lSafetyFlag = SafetyFlag.Black | SafetyFlag.Territory; break;
                case "w_territory": lSafetyFlag = SafetyFlag.White | SafetyFlag.Territory; break;
                case "b_territory": lSafetyFlag = SafetyFlag.Black | SafetyFlag.Territory; break;
                case "dame": lSafetyFlag = SafetyFlag.Dame; break;
                case "seki": lSafetyFlag = SafetyFlag.Seki; break;
                case "undecided": lSafetyFlag = SafetyFlag.Undecided; break;
                case "unsurroundable": lSafetyFlag = SafetyFlag.Unsurroundable; break;
                default: return new GTPInternalResponse(false, "error");
            }

            StringBuilder s = new StringBuilder(512);

            for (int x = 0; x < gtpGoBoard.Board.BoardSize; x++)
                for (int y = 0; y < gtpGoBoard.Board.BoardSize; y++)

                    if (gtpGoBoard.Board.GetSafetyStatus((gtpGoBoard.At(x, y))).CompareTo(lSafetyFlag))
                    {
                        if (s.Length != 0)
                            s.Append(' ');

                        s.Append(gtpGoBoard.ToString(x, y));
                    }

            return new GTPInternalResponse(true, s.ToString());
        }
Exemple #14
0
        public static GTPInternalResponse GTPFilterGames(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParameterResponse();

            gtpGoBoard.GameFilterFunction = GameRecordFilter.ToFunction(gtpCommand.GetParameter(0));

            if (gtpGoBoard.GameFilterFunction == null)
                return new GTPInternalResponse(false, "unknown game filter");

            return new GTPInternalResponse(true);
        }
Exemple #15
0
        public static GTPInternalResponse GTPPlay(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 2)
                return MissingParametersResponse();

            Color lColor = new Color();

            if (!gtpCommand.GetParameter(0, ref lColor))
                return InvalidParameterResponse();

            string lPoint = gtpCommand.GetParameter(1);

            if (gtpGoBoard.Board.PlayStone((gtpGoBoard.At(lPoint)), lColor, true))
                return new GTPInternalResponse();
            else
                return new GTPInternalResponse(false, "invalid move");
        }
Exemple #16
0
        public static GTPInternalResponse GTPKomi(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParameterResponse();

            double lKomi = 0;

            if (!gtpCommand.GetParameter(0, ref lKomi))
                return InvalidParameterResponse();

            if (lKomi >= 0)
                gtpGoBoard.Board.Komi = lKomi;

            return new GTPInternalResponse();
        }
Exemple #17
0
        public static GTPInternalResponse GTPPlaySequence(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() % 2 != 0)
                return MissingParametersResponse();

            for (int i = 0; i < gtpCommand.GetParameterCount() / 2; i++)
            {
                Color lColor = new Color();

                if (!gtpCommand.GetParameter(i * 2, ref lColor))
                    return InvalidParameterResponse();

                string lPoint = gtpCommand.GetParameter((i * 2) + 1);

                if (!gtpGoBoard.Board.PlayStone((gtpGoBoard.At(lPoint)), lColor, true))
                    return new GTPInternalResponse(false, "invalid move - " + lPoint);
            }

            return new GTPInternalResponse();
        }
Exemple #18
0
        public static GTPInternalResponse GTPLevel(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            int lLevel = 0;

            if (!gtpCommand.GetParameter(0, ref lLevel))
                return InvalidParameterResponse();

            if ((lLevel < 0) || (lLevel > 50))
                return InvalidParameterResponse();
            else
                gtpGoBoard.SearchEngine.SearchOptions.MaxPly = lLevel;

            return new GTPInternalResponse(true);
        }
Exemple #19
0
        public static GTPInternalResponse GTPProtectedLiberties(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            Color lColor = new Color();

            if (!gtpCommand.GetParameter(0, ref lColor))
                return InvalidParameterResponse();

            StringBuilder s = new StringBuilder(512);

            for (int x = 0; x < gtpGoBoard.Board.BoardSize; x++)
                for (int y = 0; y < gtpGoBoard.Board.BoardSize; y++)
                    if (gtpGoBoard.Board.IsProtectedLiberty((gtpGoBoard.At(x, y)), lColor))
                    {
                        if (s.Length != 0)
                            s.Append(' ');

                        s.Append(gtpGoBoard.ToString(x, y));
                    }

            return new GTPInternalResponse(true, s.ToString());
        }
Exemple #20
0
        public static GTPInternalResponse GTPLoadGames(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParameterResponse();

            string lFullPath = (!string.IsNullOrEmpty(gtpGoBoard.Directory)) ?
                gtpGoBoard.Directory + Path.DirectorySeparatorChar + gtpCommand.GetParameter(0)
                : gtpCommand.GetParameter(0);

            string lMask = "*.*";

            if (gtpCommand.GetParameterCount() >= 2)
                lMask = gtpCommand.GetParameter(1);

            bool lVariations = false;

            if (gtpCommand.GetParameterCount() >= 3)
                if (!gtpCommand.GetParameter(2, ref lVariations))
                    return InvalidParameterResponse();

            if (!gtpGoBoard.GameRecords.Load(lFullPath, lMask, lVariations))
                return new GTPInternalResponse(false, "unable to load games");

            return new GTPInternalResponse(true, "loaded");
        }
Exemple #21
0
        public static GTPInternalResponse GTPSafetySolver(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() != 1)
                return MissingParametersResponse();

            string lMethod = gtpCommand.GetParameter(0);

            gtpGoBoard.Board.SetSafetySolver(SafetySolverFactory.ToType(lMethod));

            return new GTPInternalResponse(true);
        }
Exemple #22
0
        public static GTPInternalResponse GTPLoadPatterns(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParameterResponse();

            string lFullPath = (!string.IsNullOrEmpty(gtpGoBoard.Directory)) ?
                gtpGoBoard.Directory + Path.DirectorySeparatorChar + gtpCommand.GetParameter(0)
                : gtpCommand.GetParameter(0);

            PatternCollection lPatternCollection = new PatternCollection(lFullPath);

            if (!lPatternCollection.Load(lFullPath))
                return new GTPInternalResponse(false, "unable to load patterns");

            gtpGoBoard.SearchEngine.SearchOptions.PatternDetector.Add(lPatternCollection);

            return new GTPInternalResponse(true, "loaded");
        }
Exemple #23
0
        public static GTPInternalResponse GTPSearchMethod(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() != 1)
                return MissingParametersResponse();

            string lMethod = gtpCommand.GetParameter(0);

            if (SearchMethodFactory.ToType(lMethod) == SearchMethodType.Unassigned)
                return InvalidParameterResponse();

            gtpGoBoard.SearchEngine.SetSearchMethod(SearchMethodFactory.ToType(lMethod));

            return new GTPInternalResponse(true);
        }
Exemple #24
0
        public static GTPInternalResponse GTPLoadSGF(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParameterResponse();

            int lMoves = 0;

            if (gtpCommand.GetParameterCount() >= 2)
                if (!gtpCommand.GetParameter(1, ref lMoves))
                    return InvalidParameterResponse();

            if (lMoves < 0)
                return InvalidParameterResponse();

            string lFullPath = (!string.IsNullOrEmpty(gtpGoBoard.Directory)) ?
                gtpGoBoard.Directory + Path.DirectorySeparatorChar + gtpCommand.GetParameter(0)
                : gtpCommand.GetParameter(0);

            SGFCollection lSGFCollection = new SGFCollection(lFullPath);

            if (lSGFCollection.IsError())
                return new GTPInternalResponse(false, "unable to load file");

            GameRecord lGameRecord = new GameRecord();

            if (!lSGFCollection.RetrieveGame(lGameRecord))
                return new GTPInternalResponse(false, "unable to load file");

            if (!GameRecordBoardAdapter.Apply(lGameRecord, gtpGoBoard.Board, true))
            //			if (!lGameRecord.Apply(gtpGoBoard.Board, true, lMoves))
                return new GTPInternalResponse(false, "unable to load file");

            return new GTPInternalResponse(true, "sgf loaded");
        }
Exemple #25
0
        public static GTPInternalResponse GTPSetTranspositionTableSize(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            int lTranspositionTableSize = 0;

            if (!gtpCommand.GetParameter(0, ref lTranspositionTableSize))
                return InvalidParameterResponse();

            if (lTranspositionTableSize <= 0)
                return InvalidParameterResponse();

            gtpGoBoard.SearchEngine.SearchOptions.TranspositionTableSize = lTranspositionTableSize;

            return new GTPInternalResponse(true);
        }
Exemple #26
0
        public static GTPInternalResponse GTPMaxTime(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            int lMaxTime = 0;

            if (!gtpCommand.GetParameter(0, ref lMaxTime))
                return InvalidParameterResponse();

            if ((lMaxTime < 0))
                return InvalidParameterResponse();
            else
                gtpGoBoard.SearchEngine.SearchOptions.MaxSeconds = lMaxTime;

            return new GTPInternalResponse(true);
        }
Exemple #27
0
        public static GTPInternalResponse GTPTimeLeft(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 2)
                return MissingParametersResponse();

            Color lColor = new Color();

            if (!gtpCommand.GetParameter(0, ref lColor))
                return InvalidParameterResponse();

            double lTimeLeft = 0;

            if (!gtpCommand.GetParameter(1, ref lTimeLeft))
                return InvalidParameterResponse();

            if ((lTimeLeft <= 0))
                return InvalidParameterResponse();

            int lStonesLeft = 0;

            if (gtpCommand.GetParameterCount() >= 3)
                if (!gtpCommand.GetParameter(2, ref lStonesLeft))
                    return InvalidParameterResponse();

            if (lColor.IsBoth)
            {
                gtpGoBoard.SearchEngine.TimeLeft[0] = lTimeLeft;
                gtpGoBoard.SearchEngine.TimeLeft[1] = lTimeLeft;
                gtpGoBoard.SearchEngine.StonesLeft[0] = lStonesLeft;
                gtpGoBoard.SearchEngine.StonesLeft[1] = lStonesLeft;
            }
            else
            {
                gtpGoBoard.SearchEngine.TimeLeft[lColor.ToInteger()] = lTimeLeft;
                gtpGoBoard.SearchEngine.StonesLeft[lColor.ToInteger()] = lStonesLeft;
            }

            return new GTPInternalResponse(true);
        }
Exemple #28
0
        public static GTPInternalResponse GTPPatternValues(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            Color lColor = new Color();

            if (!gtpCommand.GetParameter(0, ref lColor))
                return InvalidParameterResponse();

            PatternMap lPatternMap = gtpGoBoard.SearchEngine.SearchOptions.PatternDetector.FindPatterns(gtpGoBoard.Board, lColor);

            StringBuilder s = new StringBuilder(512);

            for (int lPosition = 0; lPosition < gtpGoBoard.Board.Coord.BoardArea; lPosition++)
            {
                int lValue = lPatternMap.GetValue(lPosition);

                if (lValue != 0)
                    s.Append(gtpGoBoard.Board.Coord.ToString(lPosition) + " " + (lValue).ToString() + " ");

            }

            return new GTPInternalResponse(true, s.ToString());
        }
Exemple #29
0
        public static GTPInternalResponse GTPUnconditionalStatus(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            string lPoint = gtpCommand.GetParameter(0);

            return new GTPInternalResponse(true, gtpGoBoard.Board.GetSafetyStatus((gtpGoBoard.At(lPoint))).GTPString);
        }
Exemple #30
0
        public static GTPInternalResponse GTPDumcolorEnclosedRegion(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            if (gtpCommand.GetParameterCount() < 1)
                return MissingParametersResponse();

            string lPoint = gtpCommand.GetParameter(0);

            string lResponse = gtpGoBoard.Board.ToStringEnclosedBlockDump(gtpGoBoard.At(lPoint));

            return new GTPInternalResponse(true, lResponse);
        }