// Update is called once per frame
    void Update()
    {
        if (Chess.IsCheckMate || Chess.IsStaleMate)
        {
            return;
        }

        if (!IsBlackMove)
        {
            var bestMove = Solver.FindBestMove(Chess, Constants.DefaultSeachDeath);
            Debug.Log(bestMove);
            Chess = Chess.Move(bestMove);

            ShowFigures();
            MarkSquaresFrom();
            ChangeMoveColor();
        }
        else
        {
            Dad.Action();
        }
    }
示例#2
0
        static void Main(string[] args)
        {
            //"r2qkb1r/pb1nppp1/2p4p/1p1nP1B1/2pPN3/5N2/PP2BPPP/R2QK2R w - - 0 1"
            var chess  = new Chess("rnb1kbnr/ppppqppp/8/8/8/8/PPPP1PPP/RNBQKBNR b - - 0 1");
            var solver = new ChessSolver(2);

            while (true)
            {
                Extentions.Print(Extentions.ChessToAscii(chess));
                Console.WriteLine(solver.EvaluatePosition(chess));

                if (HasMateOrStaleMate(chess))
                {
                    break;
                }

                string bestMove;
                if (chess.MoveColor == Color.white)
                {
                    do
                    {
                        bestMove = Console.ReadLine();
                    } while (bestMove.Trim() == string.Empty);
                }
                else
                {
                    bestMove = solver.FindBestMove(chess, 3);
                }

                Console.WriteLine("BestMove = " + bestMove);

                chess = chess.Move(bestMove);
                Console.WriteLine(chess.fen);
            }

            Console.ReadKey();
        }