public Piece ExecuteMoviment(Position origin, Position destination) { Piece piece = Board.removePieceFromPosition(origin); piece.IncrementMovementQuantity(); Piece capturedPiece = Board.removePieceFromPosition(destination); Board.SetPieceInPosition(piece, destination); if (capturedPiece != null) { capturedPieces.Add(capturedPiece); } // #Castle Kingside if (piece is King && destination.Column == origin.Column + 2) { Position originT = new Position(origin.Line, origin.Column + 3); Position destinationT = new Position(origin.Line, origin.Column + 1); Piece T = Board.removePieceFromPosition(originT); T.IncrementMovementQuantity(); Board.SetPieceInPosition(T, destinationT); } // #Castle Queenside if (piece is King && destination.Column == origin.Column - 2) { Position originT = new Position(origin.Line, origin.Column - 4); Position destinationT = new Position(origin.Line, origin.Column - 1); Piece T = Board.removePieceFromPosition(originT); T.IncrementMovementQuantity(); Board.SetPieceInPosition(T, destinationT); } // #jogadaespecial en passant if (piece is Pawn) { if (origin.Column != destination.Column && capturedPiece == null) { Position posP; if (piece.Color == Color.White) { posP = new Position(destination.Line + 1, destination.Column); } else { posP = new Position(destination.Line - 1, destination.Column); } capturedPiece = Board.removePieceFromPosition(posP); capturedPieces.Add(capturedPiece); } } return(capturedPiece); }