public void Go(UciGoParameters parameters) { Function = "Go"; Arguments = new List <object>() { parameters }; }
public void Go(UciGoParameters parameters) { string output = "go"; if (parameters.Depth != null) { output += " depth " + parameters.Depth; } else if (parameters.Mate != null) { output += " mate " + parameters.Mate; } else if (parameters.Infinite) { output += " infinite"; } if (parameters.Nodes != null) { output += " nodes " + parameters.Nodes; } if (parameters.Ponder == true) { output += " ponder"; } if (parameters.SearchMoves != null && parameters.SearchMoves.Count > 0) { output += " searchmoves " + parameters.SearchMoves.Select(x => x.ToString()).Aggregate((m, x) => m + " " + x); } if (parameters.BlackInc != null) { output += " binc " + parameters.BlackInc; } if (parameters.BlackTime != null) { output += " btime " + parameters.BlackTime; } if (parameters.WhiteInc != null) { output += " winc " + parameters.WhiteInc; } if (parameters.WhiteTime != null) { output += " wtime " + parameters.WhiteTime; } WriteCommand(output); }
public void Go(UciGoParameters parameters) { var player = BoardPtr->PlayerTurn; int depth = parameters.Depth ?? 99; long time = Int32.MaxValue; if (player == Board.COLOR_WHITE && parameters.WhiteTime != null) { var toGo = parameters.MovesToGo ?? 100; time = (long)(parameters.WhiteTime.Value / (double)toGo + parameters.WhiteInc.GetValueOrDefault()); } else if (player == Board.COLOR_BLACK && parameters.BlackTime != null) { var toGo = parameters.MovesToGo ?? 100; time = (long)(parameters.BlackTime.Value / (double)toGo + parameters.BlackInc.GetValueOrDefault()); } time = parameters.MoveTime ?? time; BestMove = new MoveSmall(); // Stop searching after time has passed Task.Factory.StartNew(() => { if (parameters.Infinite) { return; } Thread.Sleep((int)time); Search.StopSearch(); }); // Start the search Task.Factory.StartNew(() => { BestMove = Search.SearchPos(BoardPtr, depth); UciGui.BestMove(new UciMove(BestMove.From, BestMove.To, (UciPiece)BestMove.Promotion), null); }); }
public void Go(UciGoParameters parameters) { var player = BoardPtr->PlayerTurn; int depth = parameters.Depth ?? 99; long time = Int32.MaxValue; if(player == Board.COLOR_WHITE && parameters.WhiteTime != null) { var toGo = parameters.MovesToGo ?? 100; time = (long)(parameters.WhiteTime.Value / (double)toGo + parameters.WhiteInc.GetValueOrDefault()); } else if (player == Board.COLOR_BLACK && parameters.BlackTime != null) { var toGo = parameters.MovesToGo ?? 100; time = (long)(parameters.BlackTime.Value / (double)toGo + parameters.BlackInc.GetValueOrDefault()); } time = parameters.MoveTime ?? time; BestMove = new MoveSmall(); // Stop searching after time has passed Task.Factory.StartNew(() => { if (parameters.Infinite) return; Thread.Sleep((int)time); Search.StopSearch(); }); // Start the search Task.Factory.StartNew(() => { BestMove = Search.SearchPos(BoardPtr, depth); UciGui.BestMove(new UciMove(BestMove.From, BestMove.To, (UciPiece)BestMove.Promotion), null); }); }
public void Play(UciGoParameters parameters) { process.Go(parameters); }
public void Go(UciGoParameters parameters) { Function = "Go"; Arguments = new List<object>() { parameters }; }
public void Go(UciGoParameters parameters) { string output = "go"; if (parameters.Depth != null) output += " depth " + parameters.Depth; else if (parameters.Mate != null) output += " mate " + parameters.Mate; else if (parameters.Infinite) output += " infinite"; if (parameters.Nodes != null) output += " nodes " + parameters.Nodes; if (parameters.Ponder == true) output += " ponder"; if (parameters.SearchMoves != null && parameters.SearchMoves.Count > 0) output += " searchmoves " + parameters.SearchMoves.Select(x => x.ToString()).Aggregate((m, x) => m + " " + x); if (parameters.BlackInc != null) output += " binc " + parameters.BlackInc; if (parameters.BlackTime != null) output += " btime " + parameters.BlackTime; if (parameters.WhiteInc != null) output += " winc " + parameters.WhiteInc; if (parameters.WhiteTime != null) output += " wtime " + parameters.WhiteTime; WriteCommand(output); }