Beispiel #1
0
        public void BeginSearch(string fen, ISearchResults target, TimeSpan timeVailable)
        {
            var board = CreateBoard(fen);
            var eg    = EndGameReporter.ReportEndGame(board);

            if (eg != GameEnded.None)
            {
                target.SearchDone(string.Empty, eg);
            }
            else
            {
                BackgroundWorker wrk = new BackgroundWorker();
                wrk.DoWork += (e, a) =>
                {
                    int    bestMove = DoSearch(board, timeVailable);
                    string move     = string.Empty;
                    if (bestMove != 0)
                    {
                        move = MovePackHelper.GetAlgebraicString(bestMove);
                    }
                    target.SearchDone(move, EndGameReporter.ReportEndGame(board));
                };
                wrk.RunWorkerAsync();
            }
        }