Files
projet-dev/src/BonusTaille.java

81 lines
2.1 KiB
Java
Raw Normal View History

package linea;
import java.awt.Color;
import java.awt.Graphics;
2026-03-26 20:08:52 +01:00
import java.util.List;
public class BonusTaille extends ObjetGraphique {
protected double taille = 12;
protected boolean actif = false;
2026-03-26 20:08:52 +01:00
protected int compteurFrames = 200;
protected boolean dejaCapture = false;
protected Ligne maLigne;
2026-03-26 20:08:52 +01:00
protected List<Joueur> joueurs;
protected Jeu monJeu;
2026-03-26 20:08:52 +01:00
public BonusTaille(Ligne l, List<Joueur> joueurs, Jeu j) {
this.maLigne = l;
2026-03-26 20:08:52 +01:00
this.joueurs = joueurs;
this.monJeu = j;
this.couleur = Color.CYAN;
}
@Override
void Afficher(Graphics g) {
if (actif) {
2026-03-26 20:08:52 +01:00
g.setColor(dejaCapture ? new Color(255, 255, 255, 100) : this.couleur);
g.fillOval((int)Math.round(x), (int)Math.round(y), (int)taille, (int)taille);
}
}
@Override
void Animer() {
if (!actif) {
compteurFrames++;
}
if (compteurFrames >= 320 && !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 - 8 - (Math.random() * 45);
} else {
y = hauteurLigne + 8 + (Math.random() * 45);
}
if (y < 20) y = 20;
if (y > 550) y = 550;
compteurFrames = 0;
}
if (actif) {
double vitesseLigne = monJeu.gestionnaireNiveau.getVitesseScroll();
x -= vitesseLigne;
2026-03-26 20:08:52 +01:00
if (!dejaCapture) {
for (Joueur joueur : joueurs) {
if (joueur.verifierCollisionCollectible(x, y, taille, vitesseLigne)) {
joueur.activerBonusTaille();
dejaCapture = true;
2026-03-26 20:08:52 +01:00
break;
}
}
}
if (x + taille < 0) {
actif = false;
}
}
}
}