fix game over + mode triche + début malus bonus
This commit is contained in:
50
linea/linea/BonusMalus.java
Normal file
50
linea/linea/BonusMalus.java
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -37,8 +37,12 @@ public class Jeu implements KeyListener, ActionListener{
|
|||||||
// un label qui servira à afficher le score
|
// un label qui servira à afficher le score
|
||||||
protected JLabel labScore;
|
protected JLabel labScore;
|
||||||
|
|
||||||
|
protected JLabel labTriche;
|
||||||
|
|
||||||
protected boolean jeuCommence = false;
|
protected boolean jeuCommence = false;
|
||||||
|
|
||||||
|
protected boolean modeTriche = false;
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
// METHODES
|
// METHODES
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
@@ -48,13 +52,18 @@ public class Jeu implements KeyListener, ActionListener{
|
|||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
public Jeu(){
|
public Jeu(){
|
||||||
// Gestion du score : a réactiver en fin de TP, inutile au début
|
// Gestion du score : a réactiver en fin de TP, inutile au début
|
||||||
|
ecran.setLayout(null);
|
||||||
|
|
||||||
labScore = new JLabel();
|
labScore = new JLabel();
|
||||||
labScore.setText("<html><h3>score : 0</h3></html>");
|
labScore.setText("<html><h3>score : 0</h3></html>");
|
||||||
labScore.setBounds(20, 0, 200, 50);
|
labScore.setBounds(20, 0, 200, 50);
|
||||||
ecran.add(labScore);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -79,6 +88,11 @@ public class Jeu implements KeyListener, ActionListener{
|
|||||||
demiCercleAvant.Monter();
|
demiCercleAvant.Monter();
|
||||||
demiCercleArriere.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
|
// 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
|
// 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.horloge.stop(); // 1. Arrêter le temps
|
||||||
this.ecran.partiePerdue = true; // 2. Signaler à l'écran
|
this.ecran.partiePerdue = true; // 2. Signaler à l'écran
|
||||||
this.ecran.repaint(); // 3. Forcer l'affichage du texte
|
this.ecran.repaint(); // 3. Forcer l'affichage du texte
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique
|
|||||||
// Stockage des segments afin de pouvoir les afficher et les animer plus tard
|
// Stockage des segments afin de pouvoir les afficher et les animer plus tard
|
||||||
protected ArrayList<Segment> listeSegments = new ArrayList<>();
|
protected ArrayList<Segment> listeSegments = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
// METHODES
|
// METHODES
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
@@ -129,4 +130,7 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique
|
|||||||
}
|
}
|
||||||
return dansCercle;
|
return dansCercle;
|
||||||
}
|
}
|
||||||
|
public Segment getSegCourant() {
|
||||||
|
return this.SegCourant;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user