Exemple #1
0
 public void Go(UciGoParameters parameters)
 {
     Function  = "Go";
     Arguments = new List <object>()
     {
         parameters
     };
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            });
        }
Exemple #4
0
        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);
            });
        }
Exemple #5
0
 public void Play(UciGoParameters parameters)
 {
     process.Go(parameters);
 }
Exemple #6
0
 public void Play(UciGoParameters parameters)
 {
     process.Go(parameters);
 }
Exemple #7
0
 public void Go(UciGoParameters parameters)
 {
     Function = "Go";
     Arguments = new List<object>() { parameters };
 }
Exemple #8
0
        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);
        }