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()); }
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 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 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 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 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 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 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"); }
public static GTPInternalResponse GTPKnownComand(GTPGoBoard gtpGoBoard, GTPCommand gtpCommand) { if (gtpCommand.GetParameterCount() < 1) return MissingParameterResponse(); return new GTPInternalResponse(gtpGoBoard.RegisteredCommands.ContainsKey(gtpCommand.GetParameter(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); }
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(); }
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); }
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()); }
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); }
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 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(); }
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 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); }
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 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"); }
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 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"); }
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"); }
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 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 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 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 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 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); }