Modifications bonus,
pas trop de bonus, couleur jaune a la récolte
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user