Ejemplo n.º 1
0
        public static bool ValidateMove(BoardPosition initialPosition, BoardPosition endingPosition, bool pieceJumped = false, bool pieceCaptured = false)
        {
            // make sure the end position is within the valid board
            if ((endingPosition.Row <= 8 && endingPosition.Row >= 1) && (endingPosition.Column <= 8 && endingPosition.Column >= 1))
            {
                // make sure the move is either on the same row or same column, diagonal moves not allowed
                if (!(initialPosition.Row != endingPosition.Row && initialPosition.Column != endingPosition.Column))
                {
                    // test for slide moves versus jump moves
                    if (pieceJumped)
                    {
                        // jump move
                        if (Math.Abs(initialPosition.Row - endingPosition.Row) == 2 || Math.Abs(initialPosition.Column - endingPosition.Column) == 2)
                        {
                            return true;
                        }
                    }
                    else
                    {
                        // slide move
                        if (Math.Abs(initialPosition.Row - endingPosition.Row) == 1 || Math.Abs(initialPosition.Column - endingPosition.Column) == 1)
                        {
                            return true;
                        }
                    }
                }
            }

            return false;
        }
Ejemplo n.º 2
0
        public Move(PieceColor color, BoardPosition initialPosition, BoardPosition endingPosition, bool pieceJumped = false, bool pieceCaptured = false)
        {
            if (initialPosition.ContainsPiece())
            {
                throw new ArgumentException("Move initial posiiton must not contain a piece");
            }

            if (endingPosition.ContainsPiece())
            {
                throw new ArgumentException("Move ending posiiton must not contain a piece");
            }

            if (pieceCaptured && !pieceJumped)
            {
                throw new ArgumentException("Capture moves are required to be configured as a jump move");
            }

            if (!ValidateMove(initialPosition, endingPosition, pieceJumped, pieceCaptured))
            {
                throw new ArgumentException("Invalid move requested");
            }

            this.PieceColor = color;
            this.PieceJumped = pieceJumped;
            this.PieceCaptured = pieceCaptured;
            this.InitialPosition = initialPosition;
            this.EndingPosition = endingPosition;
        }