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) {} }