Beispiel #1
0
        public override void NotifyTurnToMove()
        {
            search.searchDiagnostics.isBook = false;
            moveFound = false;

            var bookMove = Move.InvalidMove;

            if (settings.useBook && board.plyCount <= settings.maxBookPly)
            {
                if (book.HasPosition(board.ZobristKey))
                {
                    bookMove = book.GetRandomBookMoveWeighted(board.ZobristKey);
                }
            }

            if (bookMove.IsInvalid)
            {
                if (settings.useThreading)
                {
                    StartThreadedSearch();
                }
                else
                {
                    StartSearch();
                }
            }
            else
            {
                search.searchDiagnostics.isBook  = true;
                search.searchDiagnostics.moveVal = PGNCreator.NotationFromMove(FenUtility.CurrentFen(board), bookMove);
                settings.diagnostics             = search.searchDiagnostics;
                Task.Delay(bookMoveDelayMillis).ContinueWith(t => PlayBookMove(bookMove));
            }
        }