/// <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; }
/// <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); }
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); }
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); }
public static GTPInternalResponse GTPTopMovesWhite(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand) { return GTPTopMoves(gtpGoBoard, Color.White); }
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); }
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')); }
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); }
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); }
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); }
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()); }
public static GTPInternalResponse GTPProtocolVersion(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand) { return new GTPInternalResponse(true, "2"); }
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(); }
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); }
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"); }
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()); }
public static GTPInternalResponse GTPName(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand) { return new GTPInternalResponse(true, ProgramName); }
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); }
public static GTPInternalResponse GTPQueryBoardSize(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand) { return new GTPInternalResponse(true, gtpGoBoard.Board.BoardSize.ToString()); }
public static GTPInternalResponse GTPShowBoard(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand) { return new GTPInternalResponse(true, "Board:\n" + gtpGoBoard.Board.ToString().TrimEnd('\n')); }
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)); }
public static GTPInternalResponse GTPStopThinking(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand) { gtpGoBoard.SearchEngine.StopSearch(); return new GTPInternalResponse(true); }
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); }
public static GTPInternalResponse GTPTestScoreNow(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand) { int lScore = SimpleBoardEvaluator.EvaulateBoardPosition(gtpGoBoard.Board); return new GTPInternalResponse(true, lScore.ToString()); }
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); }
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 }
public static GTPInternalResponse GTPTopMovesBlack(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand) { return GTPTopMoves(gtpGoBoard, Color.Black); }
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(); }
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); }
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); }
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); }
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"); }