bouton replay

This commit is contained in:
2026-03-27 23:45:01 +01:00
parent d0da40cc2a
commit dcb2f9041b

View File

@@ -62,6 +62,12 @@ public class Jeu implements KeyListener, ActionListener{
protected int segmentsTermines = 0; // Variable compteur de segments
protected Segment dernierSegmentValide = null;
// On sauvegarde la fenêtre principale de la partie en cours dans une variable.
// Cela nous permettra de la fermer proprement (avec la méthode .dispose())
// quand le joueur voudra lancer une nouvelle partie.
protected JFrame fenetrePrincipale;
protected javax.swing.JButton btnRejouer;
//-------------------------------------------------------------------------
// METHODES
//-------------------------------------------------------------------------
@@ -206,6 +212,7 @@ public class Jeu implements KeyListener, ActionListener{
// Création d'une fenêtre
JFrame fenetre = new JFrame();
this.fenetrePrincipale = fenetre; // On sauvegarde la fenêtre principale de la partie en cours dans une variable. Cela nous permettra de la fermer proprement (avec la méthode .dispose()) quand le joueur voudra lancer une nouvelle partie.
// A FAIRE :
// placer dans l'instance de l'écran tous les objets graphiques nécessaires
@@ -252,6 +259,43 @@ public class Jeu implements KeyListener, ActionListener{
//demiCercleArriere.setCouleur(new Color(26, 95, 161));
//demiCercleAvant.setCouleur(new Color(26, 95, 161));
ecran.ajouterObjet(itemCourant);
javax.swing.JButton bscores = BoutonsManager.creerBoutonScores(fenetre, utilisateurId);
this.ecran.add(bscores);
// On initialise le bouton avec son texte
btnRejouer = new javax.swing.JButton("Rejouer");
// Positionnement absolu sur l'écran : (x, y, largeur, hauteur)
// On le place vers le centre (x=300), un peu vers le bas (y=400)
// pour qu'il apparaisse proprement sous le grand texte "Game Over"
btnRejouer.setBounds(300, 400, 200, 50);
btnRejouer.setBackground(new java.awt.Color(46, 204, 113));
btnRejouer.setForeground(java.awt.Color.WHITE);
btnRejouer.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 20));
// TRÈS IMPORTANT : Le bouton est invisible tant que la partie est en cours !
// Il ne s'affichera qu'au moment précis où on perd (ou gagne).
btnRejouer.setVisible(false);
btnRejouer.addActionListener(e -> {
// ÉTAPE 1 : On détruit la fenêtre de la partie actuelle.
// Cela libère la mémoire et ferme l'écran du jeu fini.
fenetrePrincipale.dispose();
// ÉTAPE 2 : On crée une toute nouvelle instance de Jeu,
// On lui repasse l'ID de l'utilisateur pour qu'il reste connecté à son compte.
Jeu nouveauJeu = new Jeu(this.utilisateurId);
// ÉTAPE 3 : On lance cette nouvelle partie.
// Cela va automatiquement créer une nouvelle fenêtre, remettre le score à 0,
// et recharger le niveau 1. C'est magique !
nouveauJeu.demarrer();
});
// Enfin, on ajoute physiquement le bouton à notre ZoneDessin (l'écran)
this.ecran.add(btnRejouer);
}
@@ -297,6 +341,9 @@ public class Jeu implements KeyListener, ActionListener{
JOptionPane.showMessageDialog(fenetre, "CONGRATULATIONS !!! BRAVO VOUS AVEZ TERMINE LE JEU");
System.out.println("Fin du jeu !!! BRAVO VOUS AVEZ TERMINE LE JEU");
horloge.stop();
if (btnRejouer != null) {
btnRejouer.setVisible(true);
}
}
}
@@ -422,7 +469,8 @@ public class Jeu implements KeyListener, ActionListener{
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
this.btnRejouer.setVisible(true); // 3. Afficher le bouton "Rejouer"
this.ecran.repaint(); // 4. Forcer l'affichage du texte
GestionBDD.ajouterScore((int)this.score, this.utilisateurId);// enregistrement du score dans la base de donne
}