示例#1
0
        public Chess Move(string move)                //функция позволяющая делать ход Pe2e4(пешка переместилась с e2 на e4) Pe7e8Q(Q - это в кого она превратилась)
        {
            FigureMoving fm = new FigureMoving(move); //инициализирует ход (какая фигура)->(откуда)->(куда)->(превратилась ли во что-то)

            if (!moves.CanMove(fm))                   //можем ли сделать данный ход.
            {
                return(this);
            }
            if (board.IsCheckAfterMove(fm))    //и не будет ли после него возможность съесть короля
            {
                return(this);
            }
            Board nextBoard = board.Move(fm);       //выдает новую доску с другими расположениями фигур
            Chess nextChess = new Chess(nextBoard); //иницализирует новый шахматный экзеплеяр с новым fen и board

            return(nextChess);
        }
示例#2
0
        bool CanEatKing()
        {
            Square badKing = FindBadKing();                      //найдем координату плохого короля
            Moves  moves   = new Moves(this);                    //все возможные ходы

            foreach (FigureOnSquare fs in YieldFigures())        //по списку всех доступных фигур
            {
                FigureMoving fm = new FigureMoving(fs, badKing); //создаем ход который идет на короля
                if (moves.CanMove(fm))                           //проверяем можно ли этот ход сделать
                {
                    return(true);                                //если да ,то поставлен шах
                }
            }
            return(false);
        }