Esempio n. 1
0
        // ------------------------- Other --------------------------

        private void SendInfo(string data)
        {
            var vars = new Dictionary <UciInfo, string>();

            vars[UciInfo.String] = data;
            UciGui.Info(vars);
        }
Esempio n. 2
0
        public void Uci()
        {
            bool debug = false;

            while (debug)
            {
                System.Threading.Thread.Sleep(100);
            }

            UciGui.ID("Vladivostok", "Valdemar Erlingsson");
            UciGui.Option("Hash", UciOptionType.Spin, 32, 1, 2048, null);
            UciGui.Option("UCI_Opponent", UciOptionType.String, null, null, null, null);
            //UciGui.Option("Nullmove", UciOptionType.Check, true, null, null, null);
            //UciGui.Option("Ponder", UciOptionType.Check, false, null, null, null);
            //UciGui.Option("OwnBook", UciOptionType.Check, true, null, null, null);

            Manager.InitLibrary();
            Manager.SendMessage = EngineHandler;
            UciGui.UciOk();
        }
Esempio n. 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);
            });
        }
Esempio n. 4
0
 public void IsReady()
 {
     UciGui.ReadyOk();
 }