Beispiel #1
0
        /// <summary>
        ///
        /// проверка возможности следующего хода
        ///
        /// </summary>
        ///
        /// <param name="move">
        ///
        /// строковое представление хода
        ///
        /// </param>
        ///
        /// <returns>
        ///
        /// возвращаем новую доску с текущим ходом
        ///
        /// </returns>
        public Chess Move(string move)
        {
            FigureMoving figureMoving = new FigureMoving(move);

            /// <summary>
            ///
            /// если нельзя совершить указаный ход
            ///
            /// </summary>
            ///
            /// <returns>
            ///
            /// возвращаем текущее расположение шахмат
            ///
            /// </returns>
            if (!_moves.CanMove(figureMoving))
            {
                return(this); //ToDo : add new exception данный ход не возможен!!
            }
            if (_board.IsCheckAfter(figureMoving))
            {
                return(this);//ToDo : add new exception данный ход не возможен, IsCheck!!
            }

            Board nextBoard = _board.Move(figureMoving);
            Chess nextChess = new Chess(nextBoard);

            return(nextChess);
        }
Beispiel #2
0
        public bool isValidMove(string move)
        {
            FigureMoving fm = new FigureMoving(move);

            if (!moves.CanMove(fm))
            {
                return(false);
            }
            if (board.IsCheckAfter(fm))
            {
                return(false);
            }
            return(true);
        }
Beispiel #3
0
        public Chess Move(string move) // Pe2e4        Pe7e8Q
        {
            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);

            return(nextChess);
        }
Beispiel #4
0
        // Принимает ход в виде Pe2e4   Pe7e8Q
        public Chess Move(string move)
        {
            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);

            return(nextChess);
        }
Beispiel #5
0
        bool CanEatKing()
        {
            Square badKing = FindBadKing();
            Moves  moves   = new Moves(this);

            foreach (FigureOnSquare fs in YieldMyFigureSquares())
            {
                if (moves.CanMove(new FigureMoving(fs, badKing)))
                {
                    return(true);
                }
            }
            return(false);
        }
Beispiel #6
0
        /// <summary>
        ///
        /// алгоритм проверки возможности сьедения вражеского короля
        ///
        /// </summary>
        private bool CanEatKing()
        {
            Square badKing = FindBadKing();
            Moves  move    = new Moves(this);

            foreach (FigureOnSquare figureOnSquare in YieldFiguresOnSquare())
            {
                if (move.CanMove(new FigureMoving(figureOnSquare, badKing)))
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #7
0
        private bool CanEatKing()
        {
            var oponentKing = FindOponentKing();

            if (oponentKing == Square.none)
            {
                return(false);
            }

            var moves = new Moves(this);

            foreach (var fs in YieldFiguresOnSquares())
            {
                if (moves.CanMove(new FigureMoving(fs, oponentKing)))
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #8
0
 public bool IsValidMove(FigureMoving fm)
 {
     return(Moves.CanMove(fm) && !Board.IsCheckAfter(fm));
 }