示例#1
0
        public TurnResult Move(int newX, int newY)
        {
            var movementResult = IsLegalMove(newX, newY);

            if (movementResult.WasSuccessful)
            {
                if (movementResult.Flags.Contains(Flag.PawnPromotion))
                {
                    var queen = new Queen(PieceColor, ChessBoard)
                    {
                        HasMoved    = true,
                        XCoordinate = XCoordinate,
                        YCoordinate = YCoordinate
                    };
                    return(ChessBoard.MovePiece(XCoordinate, YCoordinate, newX, newY, queen));
                }
                return(ChessBoard.MovePiece(XCoordinate, YCoordinate, newX, newY, this));
            }
            else
            {
                return(new TurnResult()
                {
                    TurnCompleted = false,
                    OldXCoordinate = XCoordinate,
                    OldYCoordinate = YCoordinate,
                    NewXCoordinate = newX,
                    NewYCoordinate = newY,
                    PieceMoved = this,
                    ReasonForIncompleteTurn = movementResult.ReasonForFailure
                });
            }
        }
示例#2
0
        public TurnResult Move(int newX, int newY)
        {
            var movementResult = IsLegalMove(newX, newY);

            if (movementResult.WasSuccessful)
            {
                return(ChessBoard.MovePiece(XCoordinate, YCoordinate, newX, newY, this));
            }
            else
            {
                return(new TurnResult()
                {
                    TurnCompleted = false,
                    OldXCoordinate = XCoordinate,
                    OldYCoordinate = YCoordinate,
                    NewXCoordinate = newX,
                    NewYCoordinate = newY,
                    PieceMoved = this,
                    ReasonForIncompleteTurn = movementResult.ReasonForFailure
                });
            }
        }