Пример #1
0
        /// <summary>
        /// Verifies the specified GTP string.
        /// </summary>
        /// <param name="gtpString">The GTP string.</param>
        /// <param name="commandNbr">The command NBR.</param>
        /// <param name="command">The command.</param>
        /// <param name="parameters">The parameters.</param>
        /// <param name="comment">The comment.</param>
        /// <returns></returns>
        protected static bool Verify(string gtpString, int commandNbr, string command, string parameters, string comment)
        {
            GTPCommand lGTcommand = new GTPCommand(gtpString);

            if ((lGTcommand.Command != command) ||
                (lGTcommand.Parameters != parameters) ||
                (lGTcommand.Comment != comment) ||
                (lGTcommand.CommandNbr != commandNbr))
                return false;

            return true;
        }
Пример #2
0
        /// <summary>
        /// Verifies the specified GTP string.
        /// </summary>
        /// <param name="gtpString">The GTP string.</param>
        /// <param name="commandNbr">The command NBR.</param>
        /// <param name="command">The command.</param>
        /// <param name="parameters">The parameters.</param>
        /// <param name="comment">The comment.</param>
        /// <returns></returns>
        protected static bool Verify(string gtpString, int commandNbr, string command, string parameters, string comment)
        {
            GTPCommand lGTcommand = new GTPCommand(gtpString);

            if ((lGTcommand.Command != command) ||
                (lGTcommand.Parameters != parameters) ||
                (lGTcommand.Comment != comment) ||
                (lGTcommand.CommandNbr != commandNbr))
            {
                return(false);
            }

            return(true);
        }
Пример #3
0
        protected void ExecuteCommand()
        {
            if (InputBuffer.Length == 0)
            {
                return;
            }

            GTPCommand lGTPCommand = new GTPCommand(InputBuffer.ToString());

            if (lGTPCommand.Command.Length == 0)
            {
                return;
            }

            InputBuffer = new StringBuilder(250);

            GTPInternalResponse lGTPInternalResponse = GTPGoBoard.ExecuteComand(lGTPCommand);

            SendResponse(lGTPInternalResponse.IsOk(), lGTPCommand.CommandNbr, lGTPInternalResponse.Message);
        }
Пример #4
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);
        }
Пример #5
0
 public static GTPInternalResponse GTPTopMovesWhite(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
 {
     return GTPTopMoves(gtpGoBoard, Color.White);
 }
Пример #6
0
        protected void ExecuteCommand()
        {
            if (InputBuffer.Length==0)
                return;

            GTPCommand lGTPCommand = new GTPCommand(InputBuffer.ToString());

            if (lGTPCommand.Command.Length == 0)
                return;

            InputBuffer = new StringBuilder(250);

            GTPInternalResponse lGTPInternalResponse = GTPGoBoard.ExecuteComand(lGTPCommand);

            SendResponse(lGTPInternalResponse.IsOk(),lGTPCommand.CommandNbr,lGTPInternalResponse.Message);
        }
Пример #7
0
        public static GTPInternalResponse GTPAnalyzeCommands(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            StringBuilder lCommands = new StringBuilder();

            foreach (AnalyzeCommand lAnalyzeCommand in gtpGoBoard.AnalyzeCommands)
                lCommands.AppendLine(lAnalyzeCommand.Type + "/" + lAnalyzeCommand.Label + "/" + lAnalyzeCommand.Command + " " + lAnalyzeCommand.Parameters);

            return new GTPInternalResponse(true, lCommands.ToString().TrimEnd('\n'));
        }
Пример #8
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);
        }
Пример #9
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);
        }
Пример #10
0
        public static GTPInternalResponse GTPTest(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            PatternCollection lPatternCollection = new PatternCollection(@"patterns\test.db");
            gtpGoBoard.SearchEngine.SearchOptions.PatternDetector.Add(lPatternCollection);

            gtpGoBoard.SearchEngine.SearchOptions.MaxPly = 3;

            return GTPTopMoves(gtpGoBoard, Color.Black);
        }
Пример #11
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());
        }
Пример #12
0
 public static GTPInternalResponse GTPProtocolVersion(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
 {
     return new GTPInternalResponse(true, "2");
 }
Пример #13
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();
        }
Пример #14
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);
        }
Пример #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");
        }
Пример #16
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());
        }
Пример #17
0
 public static GTPInternalResponse GTPName(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
 {
     return new GTPInternalResponse(true, ProgramName);
 }
Пример #18
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);
        }
Пример #19
0
 public static GTPInternalResponse GTPQueryBoardSize(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
 {
     return new GTPInternalResponse(true, gtpGoBoard.Board.BoardSize.ToString());
 }
Пример #20
0
 public static GTPInternalResponse GTPShowBoard(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
 {
     return new GTPInternalResponse(true, "Board:\n" + gtpGoBoard.Board.ToString().TrimEnd('\n'));
 }
Пример #21
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));
        }
Пример #22
0
 public static GTPInternalResponse GTPStopThinking(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
 {
     gtpGoBoard.SearchEngine.StopSearch();
     return new GTPInternalResponse(true);
 }
Пример #23
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);
        }
Пример #24
0
        public static GTPInternalResponse GTPTestScoreNow(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            int lScore = SimpleBoardEvaluator.EvaulateBoardPosition(gtpGoBoard.Board);

            return new GTPInternalResponse(true, lScore.ToString());
        }
Пример #25
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);
        }
Пример #26
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);
        }
        public static bool ExecuteTest(MemFile memFile, string directory)
        {
            GoBoard         lGoBoard         = new GoBoard(19);
            GTPGoBoard      lGTPGoBoard      = new GTPGoBoard(lGoBoard);
            GTPCommInternal lGTPCommInternal = new GTPCommInternal();
            GTPEngine       lGTPEngine       = new GTPEngine(lGTPGoBoard, lGTPCommInternal);

            lGTPGoBoard.Directory = directory;

            GTPCommand lGTcommand = new GTPCommand("");
            string     lInput     = string.Empty;

            int[] lRegressionResults = new int[5];

            while (!memFile.EOF)
            {
                string lBuffer = memFile.ReadLine('\n');

                if ((lBuffer.Length >= 4) && (lBuffer.Substring(0, 4) == "quit"))
                {
                    break;
                }

                if ((lBuffer.Length >= 2) && (lBuffer.Substring(0, 2) == "#?"))
                {
                    GTPRegressionPattern lPattern = new GTPRegressionPattern(lBuffer);

                    GTPRegressionResult lRegressionResult = GTPRegressionPattern.Test(lPattern, lInput);

                    lRegressionResults[(int)lRegressionResult]++;

                    switch (lRegressionResult)
                    {
                    case GTPRegressionResult.passed: /* Console.WriteLine("PASSED");*/ break;

                    case GTPRegressionResult.PASSED: Console.WriteLine(lGTcommand.ToString()); Console.WriteLine(lGTcommand.CommandNbr.ToString() + " unexpected PASS!"); break;

                    case GTPRegressionResult.failed: Console.WriteLine(lGTcommand.ToString()); Console.WriteLine(lGTcommand.CommandNbr.ToString() + " failed: Correct '" + lPattern + "', got '" + Proper(lInput) + "'"); break;

                    case GTPRegressionResult.FAILED: Console.WriteLine(lGTcommand.ToString()); Console.WriteLine(lGTcommand.CommandNbr.ToString() + " unexpected failure: Correct '" + lPattern + "', got '" + Proper(lInput) + "'"); break;

                    case GTPRegressionResult.ignore: Console.WriteLine(lGTcommand.ToString()); Console.WriteLine(lGTcommand.CommandNbr.ToString() + " ignoring '" + lPattern + "', got '" + Proper(lInput) + "'"); break;

                    default: Console.WriteLine("ERROR!!!"); break;
                    }
                }
                else
                if (lBuffer.Length > 0)
                {
                    GTPCommand lGTcommand2 = new GTPCommand(lBuffer);

                    if (lGTcommand2.Command.Length != 0)
                    {
                        lGTPCommInternal.SendToEngine(lBuffer);
                        lGTPCommInternal.SendToEngine("\n");

                        lInput = lGTPCommInternal.GetResponse();

                        lGTcommand = lGTcommand2;
                    }
                }
            }

            for (int lRegressionResultIndex = 0; lRegressionResultIndex < 5; lRegressionResultIndex++)
            {
                Console.WriteLine((GTPRegressionResult)lRegressionResultIndex + " " + lRegressionResults[lRegressionResultIndex]);
            }


            return(lRegressionResults[3] == 0);              // false, only for unexpected failures
        }
Пример #28
0
 public static GTPInternalResponse GTPTopMovesBlack(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
 {
     return GTPTopMoves(gtpGoBoard, Color.Black);
 }
Пример #29
0
        public static GTPInternalResponse GTPSetFreeHandicap(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand)
        {
            gtpGoBoard.Board.ClearBoard();
            gtpGoBoard.SearchEngine.GoalBase = null;

            foreach (string lPoint in gtpCommand.ParameterParts)
                if (!gtpGoBoard.Board.PlayStone(gtpGoBoard.At(lPoint), Color.Black, false))
                    return new GTPInternalResponse(false, "unknown error");

            return new GTPInternalResponse();
        }
Пример #30
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);
        }
Пример #31
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);
        }
Пример #32
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);
        }
Пример #33
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");
        }