51 lines
1.7 KiB
Java
51 lines
1.7 KiB
Java
import java.awt.event.WindowEvent;
|
|
import java.awt.event.WindowListener;
|
|
import java.io.FileOutputStream;
|
|
import java.io.ObjectOutputStream;
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* Écouteur lié à la croix de fermeture de la fenêtre de jeu.
|
|
* Permet de déclencher une sauvegarde automatique avant de quitter.
|
|
*/
|
|
public class ActionFermerFenetre implements WindowListener {
|
|
|
|
private FenetreJeu jeu;
|
|
|
|
/**
|
|
* Constructeur de l'écouteur de la fenêtre.
|
|
* @param j La fenêtre de jeu.
|
|
*/
|
|
public ActionFermerFenetre(FenetreJeu j) {
|
|
this.jeu = j;
|
|
}
|
|
|
|
/**
|
|
* Méthode exécutée lorsque le joueur clique sur la croix de la fenêtre.
|
|
* Sérialise la partie en cours avant de fermer.
|
|
* @param e L'événement de la fenêtre.
|
|
*/
|
|
public void windowClosing(WindowEvent e) {
|
|
if (!jeu.isPartieTerminee()) {
|
|
try {
|
|
FileOutputStream fichier = new FileOutputStream("sauvegarde.ser");
|
|
ObjectOutputStream flux = new ObjectOutputStream(fichier);
|
|
flux.writeObject(jeu.getGrille());
|
|
flux.close();
|
|
fichier.close();
|
|
System.out.println("Partie sauvegardée depuis la croix");
|
|
} catch (IOException ex) {
|
|
System.out.println("Erreur : " + ex.getMessage());
|
|
}
|
|
}
|
|
System.exit(0);
|
|
}
|
|
|
|
public void windowOpened(WindowEvent e) {}
|
|
public void windowClosed(WindowEvent e) {}
|
|
public void windowIconified(WindowEvent e) {}
|
|
public void windowDeiconified(WindowEvent e) {}
|
|
public void windowActivated(WindowEvent e) {}
|
|
public void windowDeactivated(WindowEvent e) {}
|
|
}
|