Files
projet-dev/src/Bonus.java

79 lines
2.2 KiB
Java

package linea;
import java.awt.Color;
import java.awt.Graphics;
public class Bonus extends ObjetGraphique {
protected double taille = 10;
protected boolean actif = false;
protected int compteurFrames = 0;
protected Ligne maLigne;
protected Cercle monCercle;
protected Jeu monJeu;
public Bonus(Ligne l, Cercle c, Jeu j) {
this.maLigne = l;
this.monCercle = c;
this.monJeu = j;
this.couleur = Color.RED;
}
@Override
void Afficher(Graphics g) {
if (actif) {
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) {
actif = true;
x = 800;
double hauteurLigne = 300;
if (maLigne.dernierSegment != null) {
hauteurLigne = maLigne.dernierSegment.y;
}
double decalage = (Math.random() * 80) - 40;
y = hauteurLigne + decalage;
// Ce message s'affichera dans ta console Eclipse/IntelliJ/VSCode
System.out.println("DEBUG : Le bonus apparait à Y = " + y);
compteurFrames = 0;
}
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;
}
if (x + taille < 0) {
System.out.println("DEBUG : Bonus raté, il est sorti de l'écran");
actif = false;
}
}
}
}