Malus mis a jour et fonctionnel
This commit is contained in:
@@ -25,16 +25,17 @@ public class Jeu implements KeyListener, ActionListener {
|
||||
protected JLabel labScore;
|
||||
protected int score;
|
||||
|
||||
//base de données
|
||||
// base de données
|
||||
protected GestionnaireBDD bdd = new GestionnaireBDD();
|
||||
|
||||
protected Random random = new Random();
|
||||
protected int prochainBonusScore;
|
||||
protected int prochainMalusScore;
|
||||
|
||||
protected int utilisateurIdConnecte = -1;
|
||||
protected String identifiantUtilisateurConnecte;
|
||||
public int idCampagneActive = 0; // Retient la campagne (1 = Autoroute, etc.)
|
||||
public int difficulteActive = 0; // Retient la difficulté (1=Facile, 2=Moyen, 3=Difficile)
|
||||
public int idCampagneActive = 0;
|
||||
public int difficulteActive = 0;
|
||||
|
||||
public Jeu() {
|
||||
score = 0;
|
||||
@@ -60,7 +61,6 @@ public class Jeu implements KeyListener, ActionListener {
|
||||
// Initialisation initiale
|
||||
resetPartie(6, 20);
|
||||
|
||||
// On ajoute l'action au bouton "Retour" de la ZoneDessin (Game Over)
|
||||
ecran.btnRetour.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
@@ -167,6 +167,7 @@ public class Jeu implements KeyListener, ActionListener {
|
||||
labScore.setText("<html><h3>score : 0</h3></html>");
|
||||
|
||||
this.prochainBonusScore = 300 + random.nextInt(201);
|
||||
this.prochainMalusScore = 400 + random.nextInt(201);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -190,6 +191,44 @@ public class Jeu implements KeyListener, ActionListener {
|
||||
}
|
||||
}
|
||||
|
||||
if (score == prochainMalusScore) {
|
||||
double xSpawn = 810;
|
||||
double yLigne = laligne.getHauteurLigneA(xSpawn);
|
||||
|
||||
if (yLigne != -1) {
|
||||
double yOffset = random.nextBoolean() ? -30 : 30;
|
||||
double yMalus = yLigne + yOffset;
|
||||
|
||||
Malus malus = new Malus(xSpawn, yMalus, laligne.vitesseDefilement);
|
||||
ecran.ajouterObjet(malus);
|
||||
|
||||
this.prochainMalusScore = score + 400 + random.nextInt(201);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = ecran.listeObjets.size() - 1; i >= 0; i--) {
|
||||
ObjetGraphique obj = ecran.listeObjets.get(i);
|
||||
if (obj instanceof Bonus || obj instanceof Malus) {
|
||||
double dx = obj.getX() - demiCercleAvant.getX();
|
||||
double dy = obj.getY() - demiCercleAvant.getY();
|
||||
double dist = Math.sqrt(dx * dx + dy * dy);
|
||||
|
||||
if (dist < demiCercleAvant.getRayon()) {
|
||||
if (obj instanceof Bonus) {
|
||||
double newRayon = demiCercleAvant.getRayon() + 3;
|
||||
demiCercleAvant.setRayon(newRayon);
|
||||
demiCercleArriere.setRayon(newRayon);
|
||||
} else {
|
||||
double newRayon = demiCercleAvant.getRayon() - 3;
|
||||
if (newRayon < 10)
|
||||
newRayon = 10;
|
||||
demiCercleAvant.setRayon(newRayon);
|
||||
demiCercleArriere.setRayon(newRayon);
|
||||
}
|
||||
ecran.listeObjets.remove(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
labScore.setText("<html><h3>score : " + score + "</h3></html>");
|
||||
// Gestion collision simple
|
||||
@@ -197,35 +236,29 @@ public class Jeu implements KeyListener, ActionListener {
|
||||
if (hauteurLigne != -1) {
|
||||
// calcule de la distance entre le centre du cercle et la ligne
|
||||
double distance = Math.abs(hauteurLigne - demiCercleAvant.getY());
|
||||
|
||||
// Si cette distance est strictement supérieure au rayon du bouclier,
|
||||
// cela signifie que la ligne est sortie de la bulle !
|
||||
if (distance > demiCercleAvant.getRayon()) {
|
||||
gameOver();
|
||||
}
|
||||
} else {
|
||||
// Si on arrive au bout de la ligne
|
||||
victoire();
|
||||
}
|
||||
}
|
||||
|
||||
public void victoire() {
|
||||
horloge.stop();
|
||||
ecran.setVictoire(true); // Affiche "Victoire" et le bouton Retour
|
||||
ecran.setVictoire(true);
|
||||
|
||||
int dureePartie = score / 25; // Exemple : 25 frames par seconde
|
||||
int dureePartie = score / 25;
|
||||
|
||||
bdd.enregistrerPartie(dureePartie, idCampagneActive, difficulteActive, score, utilisateurIdConnecte);
|
||||
}
|
||||
|
||||
public void gameOver() {
|
||||
horloge.stop();
|
||||
ecran.setGameOver(true); // Affiche "Game Over" et le bouton Retour
|
||||
ecran.setGameOver(true);
|
||||
|
||||
int dureePartie = score / 25; // Exemple : 25 frames par seconde
|
||||
int dureePartie = score / 25;
|
||||
|
||||
// On utilise nos deux variables pour la sauvegarde !
|
||||
// L'appel est maintenant plus robuste grâce au nouveau GestionnaireBDD
|
||||
bdd.enregistrerPartie(dureePartie, idCampagneActive, difficulteActive, score, utilisateurIdConnecte);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user