Clignotement lors de la perte de vie

Clignotement blanc : Début de partie et changement de niveau

Clignotement rouge : Collision avec la ligne et obtention de malus
This commit is contained in:
2026-03-17 16:25:30 +01:00
parent 732d29dad6
commit eb74186d05
3 changed files with 42 additions and 4 deletions

View File

@@ -39,6 +39,9 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
protected boolean estGameOver = false;
protected JLabel labGameOver;
protected int compteurInvincible = 0;
public int typeInvincibilite = 0;
public boolean invincibiliteRouge = false;
protected String pseudo = "";
protected JFrame fenetre;
@@ -121,7 +124,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
ecran.ajouterObjet(demiCercleArriere);
ecran.ajouterObjet(lili);
ecran.ajouterObjet(demiCercleAvant);
demiCercleArriere.setCouleur(new Color(0.0f, 0.4f, 0.0f));
demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f));
demiCercleAvant.setCouleur(new Color(0.0f, 0.5f, 0.0f));
ecran.addKeyListener(this);
@@ -138,6 +141,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
enCollision = false;
estGameOver = false;
compteurInvincible = 0;
invincibiliteRouge = false;
gestionnaireNiveau.reinitialiser();
gestionnaireFinDePartie.reinitialiser();
ecran.demarrer();
@@ -147,9 +151,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
}
horloge.start();
// A FAIRE : donner la couleur des 2 demi-cercles
// demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f));
demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f));
}
@Override
@@ -161,6 +163,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
gestionnaireNiveau.mettreAJour();
if (gestionnaireNiveau.aChangéDeNiveau()) {
compteurInvincible = 0;
invincibiliteRouge = false;
}
ecran.setCouleurFond(gestionnaireNiveau.getCouleurFondInterpolee());
@@ -178,7 +181,40 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
if (compteurInvincible < 75) {
compteurInvincible = compteurInvincible + 1;
// clignotement
if (compteurInvincible % 10 < 5) {
if (invincibiliteRouge) {
// degats = rouge
demiCercleArriere.setCouleur(new Color(1f, 0f, 0f));
demiCercleAvant.setCouleur(new Color(1f, 0f, 0f));
} else {
// niveau/debut = blanc
demiCercleArriere.setCouleur(new Color(255, 255, 255, 150));
demiCercleAvant.setCouleur(new Color(255, 255, 255, 150));
}
} else {
// Couleurs normales entre deux clignotements
demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f));
demiCercleAvant.setCouleur(new Color(0.0f, 0.5f, 0.0f));
}
} else {
//couleur normale a la fin
demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f));
demiCercleAvant.setCouleur(new Color(0.0f, 0.5f, 0.0f));
if (demiCercleArriere.VerifierCollision(lili)) {
if (enCollision == false) {
vies = vies - 1;
enCollision = true;
compteurInvincible = 0;
invincibiliteRouge = true; // On a touché la ligne : on déclenche le ROUGE !
}
} else {
enCollision = false;
}
if (demiCercleArriere.VerifierCollision(lili)) {
if (enCollision == false) {
vies = vies - 1; // La nouvelle logique : on perd 1 vie

View File

@@ -79,6 +79,8 @@ public class Malus extends ObjetGraphique {
if (!dejaCapture) {
monJeu.vies -= 1;
dejaCapture = true;
monJeu.invincibiliteRouge = true;
monJeu.compteurInvincible = 0;
}
}
}