public Piece PlayMove(Position origin, Position destiny) { Piece piece = chessboard.RemovePiece(origin); piece.AddMovesQuantity(); Piece pieceCapture = chessboard.RemovePiece(destiny); chessboard.InsertPiece(piece, destiny); if (pieceCapture != null) { piecesCaptured.Add(pieceCapture); } //Special play small Castle if (piece is King && destiny.column == origin.column + 2) { Position originRook = new Position(origin.line, origin.column + 3); Position destinyRook = new Position(origin.line, origin.column + 1); Piece rook = chessboard.RemovePiece(originRook); rook.AddMovesQuantity(); chessboard.InsertPiece(rook, destinyRook); } //Special play big Castle if (piece is King && destiny.column == origin.column - 2) { Position originRook = new Position(origin.line, origin.column - 4); Position destinyRook = new Position(origin.line, origin.column - 1); Piece rook = chessboard.RemovePiece(originRook); rook.AddMovesQuantity(); chessboard.InsertPiece(rook, destinyRook); } //Special play En Passant if (piece is Pawn) { if (origin.column != destiny.column && pieceCapture == null) { Position positionPiece; if (piece.color == Color.White) { positionPiece = new Position(destiny.line + 1, destiny.column); } else { positionPiece = new Position(destiny.line - 1, destiny.column); } pieceCapture = chessboard.RemovePiece(positionPiece); piecesCaptured.Add(pieceCapture); } } return(pieceCapture); }