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,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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user