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

Binary file not shown.

View File

@@ -39,6 +39,9 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
protected boolean estGameOver = false; protected boolean estGameOver = false;
protected JLabel labGameOver; protected JLabel labGameOver;
protected int compteurInvincible = 0; protected int compteurInvincible = 0;
public int typeInvincibilite = 0;
public boolean invincibiliteRouge = false;
protected String pseudo = ""; protected String pseudo = "";
protected JFrame fenetre; protected JFrame fenetre;
@@ -121,7 +124,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
ecran.ajouterObjet(demiCercleArriere); ecran.ajouterObjet(demiCercleArriere);
ecran.ajouterObjet(lili); ecran.ajouterObjet(lili);
ecran.ajouterObjet(demiCercleAvant); 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)); demiCercleAvant.setCouleur(new Color(0.0f, 0.5f, 0.0f));
ecran.addKeyListener(this); ecran.addKeyListener(this);
@@ -138,6 +141,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
enCollision = false; enCollision = false;
estGameOver = false; estGameOver = false;
compteurInvincible = 0; compteurInvincible = 0;
invincibiliteRouge = false;
gestionnaireNiveau.reinitialiser(); gestionnaireNiveau.reinitialiser();
gestionnaireFinDePartie.reinitialiser(); gestionnaireFinDePartie.reinitialiser();
ecran.demarrer(); ecran.demarrer();
@@ -147,9 +151,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
} }
horloge.start(); 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 @Override
@@ -161,6 +163,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
gestionnaireNiveau.mettreAJour(); gestionnaireNiveau.mettreAJour();
if (gestionnaireNiveau.aChangéDeNiveau()) { if (gestionnaireNiveau.aChangéDeNiveau()) {
compteurInvincible = 0; compteurInvincible = 0;
invincibiliteRouge = false;
} }
ecran.setCouleurFond(gestionnaireNiveau.getCouleurFondInterpolee()); ecran.setCouleurFond(gestionnaireNiveau.getCouleurFondInterpolee());
@@ -178,7 +181,40 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
if (compteurInvincible < 75) { if (compteurInvincible < 75) {
compteurInvincible = compteurInvincible + 1; 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 { } 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 (demiCercleArriere.VerifierCollision(lili)) {
if (enCollision == false) { if (enCollision == false) {
vies = vies - 1; // La nouvelle logique : on perd 1 vie vies = vies - 1; // La nouvelle logique : on perd 1 vie

View File

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