From 9bf38dedfade45b011493a1d141604be723b182e Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Wed, 3 Dec 2025 17:46:05 +0100 Subject: [PATCH] Compito concluso --- .../LettoreMultimediale.java | 97 ++++++++++++++++--- 1 file changed, 86 insertions(+), 11 deletions(-) diff --git a/src/lettoremultimediale/LettoreMultimediale.java b/src/lettoremultimediale/LettoreMultimediale.java index b412cb6..fc51821 100644 --- a/src/lettoremultimediale/LettoreMultimediale.java +++ b/src/lettoremultimediale/LettoreMultimediale.java @@ -18,6 +18,7 @@ public class LettoreMultimediale { * @param args the command line arguments */ static Scanner sc = new Scanner(System.in); + static final String ERRORE_DEFAULT = "Opzione non valida."; public static void main(String[] args) { int scelta = -1; @@ -37,24 +38,27 @@ public class LettoreMultimediale { switch (scelta) { case 0: break; - case 1: - case 2: - case 3: - case 4: - case 5: - if(libreria[scelta - 1] instanceof Riproducibile){ - libreria[scelta - 1].play(); + case 1, 2, 3, 4, 5: + if (libreria[scelta - 1] instanceof Riproducibile) { + System.out.println(libreria[scelta - 1].play()); + } else { + System.out.println(libreria[scelta - 1].show()); } - else{ - libreria[scelta - 1].show(); + if (libreria[scelta - 1] instanceof Visualizzabile) { + modifica(false, libreria[scelta - 1]); + System.out.println("Modifica avvenuta con successo."); + } + if (libreria[scelta - 1] instanceof Ascoltabile) { + modifica(true, libreria[scelta - 1]); + System.out.println("Modifica avvenuta con successo."); } break; default: - System.out.println("Opzione non valida."); + System.out.println(ERRORE_DEFAULT); pausa(); } } catch (InputMismatchException _) { - System.out.println("Opzione non valida."); + System.out.println(ERRORE_DEFAULT); pausa(); } @@ -65,4 +69,75 @@ public class LettoreMultimediale { System.out.println("Premere un tasto per continuare. . . "); sc.nextLine(); } + + static void modifica(boolean isVolumeBeingAdjusted, Multimediale daModificare) { + String scelta; + boolean error; + + do { + error = false; + System.out.print("[A]umentare, [D]iminuire o [N]on modificare " + + (isVolumeBeingAdjusted ? "il volume" : "la luminosità") + "? "); + scelta = sc.nextLine().trim().toLowerCase(); + + switch (scelta) { + case "a": + System.out.println("Aumentare"); + aumentare(isVolumeBeingAdjusted, daModificare); + break; + case "d": + System.out.println("Diminuire"); + diminuire(isVolumeBeingAdjusted, daModificare); + break; + case "n": + System.out.println("L'elemento non verrà modificato."); + break; + default: + System.out.println(ERRORE_DEFAULT); + error = true; + pausa(); + break; + } + } while (error); + } + + static void aumentare(boolean isVolumeBeingAdjusted, Multimediale daModificare) { + for (int i = quantita(); i > 0; i--) { + if (isVolumeBeingAdjusted) { + ((Ascoltabile) daModificare).louder(); + } else { + ((Visualizzabile) daModificare).brighter(); + } + } + } + + static void diminuire(boolean isVolumeBeingAdjusted, Multimediale daModificare) { + for (int i = quantita(); i > 0; i--) { + if (isVolumeBeingAdjusted) { + ((Ascoltabile) daModificare).weaker(); + } else { + ((Visualizzabile) daModificare).darker(); + } + } + } + + static int quantita() { + int quantita; + boolean error; + + do { + error = false; + System.out.print("Di quanto? "); + quantita = sc.nextInt(); + sc.nextLine(); + + if (quantita <= 0) { + System.out.println("Errore: non sono accettati valori negativi."); + error = true; + pausa(); + } + } while (error); + + return quantita; + } }