import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.IOException; /** * Action déclenchée par le bouton pour sauvegarder l'état actuel et fermer le jeu. * Utilise la sérialisation pour écrire l'objet Grille dans un fichier. */ public class ActionSauverQuitter implements ActionListener { private FenetreJeu jeu; /** * Constructeur de l'action de sauvegarde. * @param j La fenêtre de jeu contenant la grille à sauvegarder. */ public ActionSauverQuitter(FenetreJeu j) { this.jeu = j; } /** * Sérialise la grille si la partie n'est pas terminée, puis quitte le programme. * @param e L'événement du clic. */ public void actionPerformed(ActionEvent 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 avec succès !"); } catch (IOException ex) { System.out.println("Erreur lors de la sauvegarde : " + ex.getMessage()); } } System.exit(0); } }