From 4ed39dd92af3f23a7d09cecc3490ae65decae9ac Mon Sep 17 00:00:00 2001 From: Marc Date: Sat, 28 Mar 2026 16:37:07 +0100 Subject: [PATCH] commentaires --- src/Bonus.java | 7 ++++--- src/BonusTaille.java | 2 +- src/Jeu.java | 2 +- src/Malus.java | 3 ++- src/ObjetCollectible.java | 16 +++++++++++----- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/Bonus.java b/src/Bonus.java index 3382b00..9cfe411 100644 --- a/src/Bonus.java +++ b/src/Bonus.java @@ -14,18 +14,19 @@ public class Bonus extends ObjetCollectible { @Override protected int getSeuilActivation() { return 220; } - @Override protected Color getCouleurCapture() { return Color.BLUE; } + @Override protected Color getCouleurCapture() { return Color.BLUE; } // couleur après avoir été ramasssé @Override protected double calculerY(double hauteurLigne) { - if (Math.random() > 0.5) return hauteurLigne - 10 - (Math.random() * 50); + if (Math.random() > 0.5) return hauteurLigne - 10 - (Math.random() * 50); // position du bonus else return hauteurLigne + 10 + (Math.random() * 50); } @Override protected void appliquerEffet(Joueur joueur) { if (!monJeu.cheatMode) joueur.ajouterVie(); - } + } // En cheat mode, le bonus ne sert à rien (on a déjà l'invincibilité) + @Override protected void dessiner(Graphics g) { diff --git a/src/BonusTaille.java b/src/BonusTaille.java index 2e875b2..2d7b657 100644 --- a/src/BonusTaille.java +++ b/src/BonusTaille.java @@ -19,7 +19,7 @@ public class BonusTaille extends ObjetCollectible { @Override protected double calculerY(double hauteurLigne) { - if (Math.random() > 0.5) return hauteurLigne - 8 - (Math.random() * 45); + if (Math.random() > 0.5) return hauteurLigne - 8 - (Math.random() * 45); // position du bonus else return hauteurLigne + 8 + (Math.random() * 45); } diff --git a/src/Jeu.java b/src/Jeu.java index 82e9ae4..70f58d1 100644 --- a/src/Jeu.java +++ b/src/Jeu.java @@ -182,7 +182,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener { for (Joueur joueur : joueurs) { joueur.mettreAJourRayon(rayonBase); joueur.mettreAJourInvincibilite(); - if (!cheatMode) joueur.verifierCollisionLigne(lili); + if (!cheatMode) joueur.verifierCollisionLigne(lili); // si cheat mode activé : plus de perte de vie joueur.resterDansLigne(lili); } diff --git a/src/Malus.java b/src/Malus.java index 97fad76..6a1870a 100644 --- a/src/Malus.java +++ b/src/Malus.java @@ -19,12 +19,13 @@ public class Malus extends ObjetCollectible { @Override protected double calculerY(double hauteurLigne) { - if (Math.random() > 0.5) return hauteurLigne - 75 - (Math.random() * 30); + if (Math.random() > 0.5) return hauteurLigne - 75 - (Math.random() * 30); // position du malus else return hauteurLigne + 75 + (Math.random() * 30); } @Override protected void appliquerEffet(Joueur joueur) { + // On ne punit pas si le joueur est en cheat mode ou en période d'invincibilité (clignotement) if (!monJeu.cheatMode && !joueur.estInvincible()) joueur.retirerVie(); } diff --git a/src/ObjetCollectible.java b/src/ObjetCollectible.java index d18d6bb..5e33ec5 100644 --- a/src/ObjetCollectible.java +++ b/src/ObjetCollectible.java @@ -4,9 +4,11 @@ import java.awt.Color; import java.awt.Graphics; import java.util.List; +// Classe de base pour tous les objets qu'on peut ramasser (bonus, malus...) +// Elle gère toute la logique commune : apparition, déplacement, collision + public abstract class ObjetCollectible extends ObjetGraphique { - - + protected double taille; protected boolean actif = false; protected int compteurFrames = 0; @@ -21,6 +23,7 @@ public abstract class ObjetCollectible extends ObjetGraphique { this.joueurs = joueurs; this.monJeu = j; } + // Chaque sous-classe décide quand elle apparaît, où, quel effet elle a et comment elle se dessine protected abstract int getSeuilActivation(); protected abstract double calculerY(double hauteurLigne); @@ -44,6 +47,8 @@ public abstract class ObjetCollectible extends ObjetGraphique { if (!actif) compteurFrames++; if (compteurFrames >= getSeuilActivation() && !actif) { + // Quand on a attendu assez longtemps, l'objet spawn à droite de l'écran + actif = true; dejaCapture = false; x = 800; @@ -58,12 +63,13 @@ public abstract class ObjetCollectible extends ObjetGraphique { if (actif) { double vitesseLigne = monJeu.gestionnaireNiveau.getVitesseScroll(); - x -= vitesseLigne; + x -= vitesseLigne; // l'objet suit la vitesse du niveau + if (!dejaCapture) { for (Joueur joueur : joueurs) { if (joueur.verifierCollisionCollectible(x, y, taille, vitesseLigne)) { - appliquerEffet(joueur); - dejaCapture = true; + appliquerEffet(joueur); // délégué à la sous-classe + dejaCapture = true; // évite d'appliquer l'effet plusieurs fois break; } }