From 0d44cc1f9a4790ae93939764e364e18e3c422c88 Mon Sep 17 00:00:00 2001
From: Nathan DOMENICHINI
 <e24a014x@ird009-13-23-l.etu.polytech.univ-nantes.prive>
Date: Fri, 25 Apr 2025 12:14:24 +0200
Subject: [PATCH] tp4_java

---
 s6/Java/TP4/src/FREEMIUM/Client.java       | 36 +++++++++++++++++++
 s6/Java/TP4/src/FREEMIUM/EMail.java        | 23 ++++++++++++
 s6/Java/TP4/src/FREEMIUM/Freemium.java     | 41 ++++++++++++++++++++++
 s6/Java/TP4/src/FREEMIUM/IAbonnement.java  |  8 +++++
 s6/Java/TP4/src/FREEMIUM/Premium.java      | 37 +++++++++++++++++++
 s6/Java/TP4/src/FREEMIUM/Systeme.java      | 20 +++++++----
 s6/Java/TP4/src/FREEMIUM/Utilisateur.java  | 14 --------
 s6/Java/TP4/src/MultiPalet/Champignon.java | 22 ++++++++++++
 s6/Java/TP4/src/MultiPalet/Jeu.java        | 33 ++++++++++++++---
 9 files changed, 209 insertions(+), 25 deletions(-)
 create mode 100644 s6/Java/TP4/src/FREEMIUM/Client.java
 create mode 100644 s6/Java/TP4/src/FREEMIUM/Freemium.java
 create mode 100644 s6/Java/TP4/src/FREEMIUM/IAbonnement.java
 create mode 100644 s6/Java/TP4/src/FREEMIUM/Premium.java
 delete mode 100644 s6/Java/TP4/src/FREEMIUM/Utilisateur.java
 create mode 100644 s6/Java/TP4/src/MultiPalet/Champignon.java

diff --git a/s6/Java/TP4/src/FREEMIUM/Client.java b/s6/Java/TP4/src/FREEMIUM/Client.java
new file mode 100644
index 00000000..bc5cc497
--- /dev/null
+++ b/s6/Java/TP4/src/FREEMIUM/Client.java
@@ -0,0 +1,36 @@
+package FREEMIUM;
+
+import java.util.List;
+
+public class Client {
+    private String nom;
+    private List<Integer> favoris;
+    private EMail email;
+    IAbonnement abonnement;
+
+    public Client(EMail email, String nom, IAbonnement abonnement) {
+        this.nom = nom;
+        this.email = email;
+        this.abonnement = abonnement;
+    }
+
+    public void ecouter(int id) throws Forbidden {
+        if(this.abonnement.peutEcouter()) this.abonnement.servir_morceau(id);
+    }
+
+    public void ajouterFavori(int id) {
+        favoris.add((Integer) id);
+    }
+
+    public void changerAbonnement(IAbonnement nouveau) {
+        this.abonnement = nouveau;
+    }
+
+    public String getNom() {
+        return this.nom;
+    }
+
+    public List<Integer> getFavoris() {
+        return this.favoris;
+    }
+}
diff --git a/s6/Java/TP4/src/FREEMIUM/EMail.java b/s6/Java/TP4/src/FREEMIUM/EMail.java
index 5105bd38..6b03e031 100644
--- a/s6/Java/TP4/src/FREEMIUM/EMail.java
+++ b/s6/Java/TP4/src/FREEMIUM/EMail.java
@@ -1,5 +1,28 @@
 package FREEMIUM;
 
 public class EMail {
+    String adresse;
+
+    EMail (String adresse) {
+        this.adresse = adresse;
+    }
+
+    public String getAdresse(){
+        return this.adresse;
+    }
+
+    @Override
+    public String toString(){
+        return this.adresse;
+    }
     
+    @Override
+    public boolean equals(Object o){
+        return o.equals(this);
+    }
+
+    @Override
+    public int hashCode(){
+        return hashCode();
+    }
 }
diff --git a/s6/Java/TP4/src/FREEMIUM/Freemium.java b/s6/Java/TP4/src/FREEMIUM/Freemium.java
new file mode 100644
index 00000000..47c97549
--- /dev/null
+++ b/s6/Java/TP4/src/FREEMIUM/Freemium.java
@@ -0,0 +1,41 @@
+package FREEMIUM;
+
+import FREEMIUM.BanqueMusique.Sound;
+
+public class Freemium implements IAbonnement{
+
+    private int cpt_musiques, MAX_MORCEAUX;
+    private boolean pub, OPTION_Q3;
+
+    
+
+    public Freemium(int MAX_MORCEAUX, boolean pub) {
+        this.MAX_MORCEAUX = MAX_MORCEAUX;
+        this.pub = pub;
+    }
+
+    @Override
+    public void reset() {
+        cpt_musiques = 0;
+    }
+
+    @Override
+    public boolean payer() {
+        return true;
+    }
+
+    @Override
+    public Sound servir_morceau(int id) throws Forbidden{
+        if(peutEcouter()) {
+            cpt_musiques++;
+            return BanqueMusique.getFile(id);
+        }
+        return null;  
+    }
+
+    @Override
+    public boolean peutEcouter() {
+        return cpt_musiques <= 3;
+    }
+}
+
diff --git a/s6/Java/TP4/src/FREEMIUM/IAbonnement.java b/s6/Java/TP4/src/FREEMIUM/IAbonnement.java
new file mode 100644
index 00000000..2ede3d6d
--- /dev/null
+++ b/s6/Java/TP4/src/FREEMIUM/IAbonnement.java
@@ -0,0 +1,8 @@
+package FREEMIUM;
+
+public interface IAbonnement {
+    public void reset();
+    public boolean payer();
+    public BanqueMusique.Sound servir_morceau(int id) throws Forbidden;
+    public boolean peutEcouter();
+}
diff --git a/s6/Java/TP4/src/FREEMIUM/Premium.java b/s6/Java/TP4/src/FREEMIUM/Premium.java
new file mode 100644
index 00000000..82074682
--- /dev/null
+++ b/s6/Java/TP4/src/FREEMIUM/Premium.java
@@ -0,0 +1,37 @@
+package FREEMIUM;
+
+import FREEMIUM.BanqueMusique.Sound;
+
+public class Premium implements IAbonnement{
+
+    int FRAIS_ABONNEMENT, cpt_musiques;
+    CarteBancaire carte;
+
+    public Premium(CarteBancaire carte) {
+        this.carte = carte;
+    }
+
+    @Override
+    public void reset() {
+        cpt_musiques = 0;
+    }
+
+    @Override
+    public boolean payer() {
+        return this.carte.paye(FRAIS_ABONNEMENT);
+    }
+
+    @Override
+    public Sound servir_morceau(int id) throws Forbidden{
+        if(peutEcouter()) {
+            cpt_musiques++;
+            return BanqueMusique.getFile(id);
+        }
+        return null;  
+    }
+
+    @Override
+    public boolean peutEcouter() {
+        return true;
+    }
+}
diff --git a/s6/Java/TP4/src/FREEMIUM/Systeme.java b/s6/Java/TP4/src/FREEMIUM/Systeme.java
index 3e7d8dce..c389717f 100644
--- a/s6/Java/TP4/src/FREEMIUM/Systeme.java
+++ b/s6/Java/TP4/src/FREEMIUM/Systeme.java
@@ -3,19 +3,25 @@ package FREEMIUM;
 import java.util.* ;
 
 class Systeme {
-   List <Utilisateur> lesUtilisateurs ;
+   List <Client> lesClients ;
 
    Systeme(){
-      lesUtilisateurs = new LinkedList<>();
+      lesClients = new ArrayList<Client>();
    }
 
-   void payerTous(int montant){
-      for (Utilisateur u : lesUtilisateurs){
-         u.payer(montant);
+   void addClient(Client c) {
+      this.lesClients.add(c);
+   }
+
+   void payerTous(){
+      for (Client u : lesClients){
+         u.abonnement.payer();
       }
    }
 
-   Utilisateur get(EMail a){
-      throw new UnsupportedOperationException(); // FIXME
+   void resetTous(){
+      for (Client u : lesClients){
+         u.abonnement.reset();
+      }
    }
 }
diff --git a/s6/Java/TP4/src/FREEMIUM/Utilisateur.java b/s6/Java/TP4/src/FREEMIUM/Utilisateur.java
deleted file mode 100644
index ecdd5af3..00000000
--- a/s6/Java/TP4/src/FREEMIUM/Utilisateur.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package FREEMIUM;
-
-class Utilisateur {
-   String id, nom ;
-
-   public Utilisateur(String id, String nom){
-      this.id = id ;
-      this.nom = nom ;
-   }
-
-   void payer(int montant){
-      System.out.println("Facturation : " + nom + " " + montant); 
-   }
-}
diff --git a/s6/Java/TP4/src/MultiPalet/Champignon.java b/s6/Java/TP4/src/MultiPalet/Champignon.java
new file mode 100644
index 00000000..f3b58eb6
--- /dev/null
+++ b/s6/Java/TP4/src/MultiPalet/Champignon.java
@@ -0,0 +1,22 @@
+package MultiPalet;
+
+public class Champignon {
+    private int x, y, size;
+    public Champignon(int x, int y, int size) {
+        this.x = x;
+        this.y = y;
+        this.size = size;
+    }
+
+    public int getX() {
+        return x;
+    }
+
+    public int getY() {
+        return y;
+    }
+
+    public int getSize() {
+        return size;
+    }
+}
diff --git a/s6/Java/TP4/src/MultiPalet/Jeu.java b/s6/Java/TP4/src/MultiPalet/Jeu.java
index 37ec9c80..7bad47b5 100644
--- a/s6/Java/TP4/src/MultiPalet/Jeu.java
+++ b/s6/Java/TP4/src/MultiPalet/Jeu.java
@@ -8,22 +8,41 @@ class Fenetre extends JFrame {
    public Fenetre() {
       setSize(320, 320);
       Pulsar p1 = new Pulsar(60, 90);
-      Palet p2 = new Palet(300, 60);
+      Pulsar p2 = new Pulsar(300, 60);
+      Palet p3 = new Palet(200, 30);
 
-      Palet[] liste = {p1,p2};
+      Palet[] p = {p1,p2,p3};
+      Champignon c[] = {new Champignon(50, 50, 16)};
       
-      this.add(new Paneau(liste));
+      this.add(new Paneau(p, c));
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+      
    }
 }
 
 
 class Paneau extends JPanel {
    Palet p[];
+   Champignon champiiii[];
 
-   Paneau(Palet p[]){
+   Paneau(Palet p[], Champignon c[]){
       super();
       this.p=p ;
+      this.champiiii = c;
+      cptType();
+   }
+
+   public void cptType(){
+      int cptPulsar = 0;
+      int cptPalet = 0;
+      for(Palet palet : p) {
+         if ( palet instanceof Pulsar){
+            cptPulsar ++;
+         } else if ( palet instanceof Palet) {
+            cptPalet ++;
+         }
+      }
+      System.out.println("olala le nb de palet : "+ cptPalet+ ", et  pulsarrrrr : "+ cptPulsar);
    }
 
    @Override
@@ -46,6 +65,11 @@ class Paneau extends JPanel {
          g.fillRoundRect((palet.getX() - palet.getSize()/2), (palet.getY() - palet.getSize()/2), palet.getSize(), palet.getSize(), 5, 5);
          palet.deplace() ;
       }
+
+      g.setColor(Color.RED);
+      for(Champignon c : champiiii) {
+         g.fillOval(c.getX(), c.getY(), c.getSize(), c.getSize()+250);
+      }
    }
 }
 
@@ -57,6 +81,7 @@ public class Jeu {
       Fenetre f = new Fenetre() ;
       f.setVisible(true);
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+   
       
       while (true){
          f.repaint() ; 
-- 
GitLab