From 2017bd19076179958f67fe8c952cbe15c8573634 Mon Sep 17 00:00:00 2001 From: Marc Date: Mon, 16 Mar 2026 16:31:57 +0100 Subject: [PATCH] Modifications bonus, MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pas trop de bonus, couleur jaune a la récolte --- src/Bonus.java | 52 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/src/Bonus.java b/src/Bonus.java index db08c22..bd553f5 100644 --- a/src/Bonus.java +++ b/src/Bonus.java @@ -8,6 +8,8 @@ public class Bonus extends ObjetGraphique { protected double taille = 10; protected boolean actif = false; protected int compteurFrames = 0; + protected boolean dejaCapture = false; + protected Ligne maLigne; protected Cercle monCercle; @@ -23,21 +25,26 @@ public class Bonus extends ObjetGraphique { @Override void Afficher(Graphics g) { if (actif) { - g.setColor(this.couleur); + if (dejaCapture) { + g.setColor(Color.ORANGE); + } else { + g.setColor(this.couleur); + } g.fillRect((int)Math.round(x), (int)Math.round(y), (int)taille, (int)taille); } } @Override void Animer() { - // On compte le temps uniquement si le bonus n'est pas déjà sur l'écran if (!actif) { compteurFrames++; } - // TEMPS RÉDUIT POUR TESTER : 50 frames = 2 secondes (au lieu de 375) - if (compteurFrames >= 100 && !actif) { + if (compteurFrames >= 300 && !actif) { + actif = true; + dejaCapture = false; + x = 800; double hauteurLigne = 300; @@ -45,11 +52,14 @@ public class Bonus extends ObjetGraphique { hauteurLigne = maLigne.dernierSegment.y; } - double decalage = (Math.random() * 80) - 40; - y = hauteurLigne + decalage; + if (Math.random() > 0.5) { + y = hauteurLigne - 80 - (Math.random() * 50); + } else { + y = hauteurLigne + 30 + (Math.random() * 20); + } - // Ce message s'affichera dans ta console Eclipse/IntelliJ/VSCode - System.out.println("DEBUG : Le bonus apparait à Y = " + y); + if (y < 20) y = 20; + if (y > 550) y = 550; compteurFrames = 0; } @@ -57,21 +67,25 @@ public class Bonus extends ObjetGraphique { if (actif) { x -= 10; - // --- VÉRIFICATION DE LA COLLISION --- - double centreX = x + (taille / 2.0); - double centreY = y + (taille / 2.0); - double dx = centreX - monCercle.x; - double dy = centreY - monCercle.y; - double distance = Math.sqrt((dx * dx) + (dy * dy)); - if (distance < monCercle.getRayon()) { - System.out.println("DEBUG : Bonus attrapé ! +1 Vie"); - monJeu.vies += 1; - actif = false; + + double centreX = x + (taille / 2.0); + + if (centreX <= monCercle.x && centreX > monCercle.x - 10) { + + double hautCercle = monCercle.y - monCercle.getRayon(); + double basCercle = monCercle.y + monCercle.getRayon(); + + if (y > hautCercle && (y + taille) < basCercle) { + + if (!dejaCapture) { + monJeu.vies += 1; + dejaCapture = true; + } + } } if (x + taille < 0) { - System.out.println("DEBUG : Bonus raté, il est sorti de l'écran"); actif = false; } }