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 boolean dejaCapture = false; 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) { 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() { if (!actif) { compteurFrames++; } if (compteurFrames >= 300 && !actif) { actif = true; dejaCapture = false; x = 800; double hauteurLigne = 300; if (maLigne.dernierSegment != null) { hauteurLigne = maLigne.dernierSegment.y; } if (Math.random() > 0.5) { y = hauteurLigne - 80 - (Math.random() * 50); } else { y = hauteurLigne + 30 + (Math.random() * 20); } if (y < 20) y = 20; if (y > 550) y = 550; compteurFrames = 0; } if (actif) { x -= 10; 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) { actif = false; } } } }