Derniere version du jeu
This commit is contained in:
+56
-12
@@ -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 !");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user