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