Derniere version du jeu

This commit is contained in:
lecointre
2026-04-12 16:40:07 +02:00
parent 43cc3c1145
commit 86ff392e75
7 changed files with 734 additions and 244 deletions
+56 -12
View File
@@ -1,26 +1,70 @@
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.IOException;
import javax.swing.JOptionPane;
/**
* Observateur gérant le bouton situé en bas de la fenêtre de jeu.
*/
public class ControleurJeu implements ActionListener {
/** Constante définissant le nom du fichier de sauvegarde. */
private static final String NOM_FICHIER_SAUVEGARDE = "sauvegarde.dat";
/** Constante définissant le code de sortie normal de l'application. */
private static final int CODE_SORTIE_NORMALE = 0;
/** Référence à la fenêtre de jeu actuellement ouverte. */
private FenetreJeu fenetre;
public ControleurJeu(FenetreJeu f) {
this.fenetre = f;
/**
* Constructeur de l'écouteur du bouton de jeu.
* @param fenetreJeu la fenêtre à observer.
*/
public ControleurJeu(FenetreJeu fenetreJeu) {
this.fenetre = fenetreJeu;
}
/**
* Agit selon l'état de la partie : retourne au menu ou sauvegarde la progression.
* @param evenement le clic sur le bouton.
*/
@Override
public void actionPerformed(ActionEvent e) {
// Si la partie est finie, le bouton sert à retourner au menu
public void actionPerformed(ActionEvent evenement) {
if (fenetre.getGrille().isPartieTerminee()) {
this.fenetre.dispose();
MenuPrincipal nouveauMenu = new MenuPrincipal();
nouveauMenu.setVisible(true);
}
// Sinon (partie en cours), c'est bien le bouton "Sauver et Quitter"
else {
System.out.println("Sauvegarde de la partie en cours... (Bientôt implémenté)");
System.exit(0);
retournerAuMenu();
} else {
sauvegarderEtQuitter();
}
}
/**
* Ferme la partie et rouvre une nouvelle instance du menu principal.
*/
private void retournerAuMenu() {
this.fenetre.dispose();
MenuPrincipal nouveauMenu = new MenuPrincipal();
nouveauMenu.setVisible(true);
}
/**
* Grave la grille en mémoire dans un fichier et ferme l'application.
*/
private void sauvegarderEtQuitter() {
try {
FileOutputStream fluxSortie = new FileOutputStream(NOM_FICHIER_SAUVEGARDE);
ObjectOutputStream graveurObjet = new ObjectOutputStream(fluxSortie);
graveurObjet.writeObject(fenetre.getGrille());
graveurObjet.close();
fluxSortie.close();
System.exit(CODE_SORTIE_NORMALE);
} catch (IOException exception) {
JOptionPane.showMessageDialog(fenetre, "Erreur lors de la sauvegarde !");
}
}
}