Files
SAE21_2025/ActionFermerFenetre.java
T

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