fix game over + mode triche + début malus bonus

This commit is contained in:
2026-03-10 20:01:39 +01:00
parent a2166b74e1
commit de396311fc
3 changed files with 72 additions and 4 deletions

View File

@@ -0,0 +1,50 @@
package linea;
import java.awt.Color;
import java.awt.Graphics;
public class BonusMalus extends ObjetGraphique {
public boolean estBonus;
public boolean actif = true; // Permet de le faire disparaître une fois ramassé
public int taille = 15;
public BonusMalus(double startX, double startY, boolean bonus) {
this.x = startX;
this.y = startY;
this.estBonus = bonus;
}
@Override
void Afficher(Graphics g) {
if (!actif) return; // S'il a été ramassé, on ne le dessine plus
if (estBonus) {
g.setColor(Color.green); // Carré jaune (Bonus)
g.fillRect((int)x, (int)y - taille / 2, taille, taille);
} else {
g.setColor(Color.red); // Triangle rouge (Malus)
int[] xPoints = {(int)x, (int)x + taille / 2, (int)x + taille};
int[] yPoints = {(int)y + taille / 2, (int)y - taille / 2, (int)y + taille / 2};
g.fillPolygon(xPoints, yPoints, 3);
}
}
@Override
void Animer() {
this.x -= 5; // Il se déplace vers la gauche à la même vitesse que la ligne
}
// Vérifie si le joueur touche l'objet
public boolean estTouche(Cercle c) {
if (!actif) return false;
// Calcul de la distance entre le centre de l'objet et le centre du joueur
double centreItemX = x + taille / 2.0;
double centreItemY = y;
double distance = Math.sqrt(Math.pow(centreItemX - c.x, 2) + Math.pow(centreItemY - c.y, 2));
// Si la distance est inférieure au rayon du joueur, c'est touché !
return distance < (c.getRayon() + taille / 2.0);
}
}

View File

@@ -37,7 +37,11 @@ public class Jeu implements KeyListener, ActionListener{
// un label qui servira à afficher le score
protected JLabel labScore;
protected JLabel labTriche;
protected boolean jeuCommence = false;
protected boolean modeTriche = false;
//-------------------------------------------------------------------------
// METHODES
@@ -48,13 +52,18 @@ public class Jeu implements KeyListener, ActionListener{
//-------------------------------------------------------------------------
public Jeu(){
// Gestion du score : a réactiver en fin de TP, inutile au début
ecran.setLayout(null);
labScore = new JLabel();
labScore.setText("<html><h3>score : 0</h3></html>");
labScore.setBounds(20, 0, 200, 50);
ecran.add(labScore);
labTriche = new JLabel();
labTriche.setText("<html><h3 style='color:red;'>Mode de triche activé</h3></html>");
labTriche.setBounds(600, 0, 200, 50); // Placé en haut à droite (la fenêtre fait 800 de large)
labTriche.setVisible(false); // Caché par défaut au lancement
ecran.add(labTriche);
}
@@ -78,7 +87,12 @@ public class Jeu implements KeyListener, ActionListener{
// On demande aux deux demi-cercle de "monter"
demiCercleAvant.Monter();
demiCercleArriere.Monter();
}
}
if(keyCode==32){//touche espace
modeTriche =!modeTriche;
labTriche.setVisible(modeTriche); //afficher ou cacher le label
}
}
//-------------------------------------------------------------------------
@@ -229,7 +243,7 @@ public class Jeu implements KeyListener, ActionListener{
// NB: Le jeu commence quand la ligne est dans le cercle
// Au début le ligne n'est pas dans le cercle car la ligne est à droite du cercle, et elle se déplace vers la gauche
//-------------------------------------------------------------------------------------------------------------------
if (this.jeuCommence) {
if (this.laLigne.getSegCourant()!=null && !this.modeTriche) { // Le jeu s'arrête si le joueur n'a pas traversé la première ligne
this.horloge.stop(); // 1. Arrêter le temps
this.ecran.partiePerdue = true; // 2. Signaler à l'écran
this.ecran.repaint(); // 3. Forcer l'affichage du texte

View File

@@ -10,7 +10,7 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique
// Ne pas oublier qu'il y a des propriétés et méthodes reçues par l'héritage
//-------------------------------------------------------------------------
// PROPRIETES
// PROPRIETES
//-------------------------------------------------------------------------
// nb de Segments qui composent la ligne
@@ -25,6 +25,7 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique
// Propriété listes de segements: Une ligne est constitué de plusieurs segments.
// Stockage des segments afin de pouvoir les afficher et les animer plus tard
protected ArrayList<Segment> listeSegments = new ArrayList<>();
//-------------------------------------------------------------------------
// METHODES
@@ -129,4 +130,7 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique
}
return dansCercle;
}
public Segment getSegCourant() {
return this.SegCourant;
}
}