Beispiel #1
0
        /// <summary>
        /// специальная функция, которая нужна для рассчета ИИ в отдельном потоке
        /// полностью заведует взаимодействием с ИИ и запускается в отдельном потоке
        /// </summary>
        public void AIRun()
        {
            _AIProcessing = true;
            Move BestMove = AI.Processing(_MainBoard);

            _MainBoard = Board.DoMove(_MainBoard, BestMove);                      //делаем ход

            bool CheckCheck = Board.CheckCheck(_MainBoard, _MainBoard.NextColor); //проверим ход на шах

            if (CheckCheck)
            {
                bool CheckMate = Board.CheckMate(_MainBoard);//проверим ход на мат
                if (CheckMate)
                {
                    VisualBoard.CheckMate(_MainBoard.NextColor);
                    VisualBoard.DrawVisualBoard(this, _MainBoard);//перерисовываем доску
                    return;
                }
            }
            VisualBoard.DrawVisualBoard(this, _MainBoard);                         //перерисовываем доску
            VisualBoard.DrawVisualBoardEnemyMoved(this, _MainBoard, BestMove.XY2); //нарисуем доступные ходы

            _AIProcessing = false;
        }