From c7615e77adc08d55d30685d28014d96cb76ff2cd Mon Sep 17 00:00:00 2001
From: Vincent <vi.teissier@gmail.com>
Date: Sun, 5 May 2024 17:32:57 +0200
Subject: [PATCH] =?UTF-8?q?Message=20quand=20gagn=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Sudoku.java               | 15 ++++++++++++++-
 SudokuButtonListener.java |  9 +++++----
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/Sudoku.java b/Sudoku.java
index 2b17a26..6a867bb 100644
--- a/Sudoku.java
+++ b/Sudoku.java
@@ -1,3 +1,5 @@
+import javax.swing.JOptionPane;
+
 /**
  * La classe Sudoku représente un jeu de Sudoku avec une grille associée.
  * Elle fournit des méthodes pour interagir avec la grille, telles que le chargement à partir d'un fichier,
@@ -6,6 +8,7 @@
 public class Sudoku {
     private Grid grid;
     private boolean solved;
+    private SudokuSolver solver;
 
     /**
      * Constructeur par défaut. Initialise un Sudoku avec une grille vide et non résolue.
@@ -13,6 +16,7 @@ public class Sudoku {
     public Sudoku() {
         this.grid = new Grid();
         this.solved = false;
+        this.solver = new SudokuSolver();
     }
     
     /**
@@ -46,6 +50,16 @@ public class Sudoku {
     public void loadGridFromFile(String fileName) {
         this.grid.loadGridFromFile(fileName);
     }
+    
+    /**
+     * Vérifie si la grille est résolue.
+     */
+    public void checkIfGridIsSolved() {
+    this.solved = solver.solve(grid);
+    if (this.solved) {
+        JOptionPane.showMessageDialog(null, "Félicitations ! La grille est résolue !");
+    }
+}
 
     /**
      * Imprime la grille de Sudoku sur la sortie standard.
@@ -60,5 +74,4 @@ public class Sudoku {
             System.out.println(); // Passer à la ligne suivante après chaque ligne de la grille
         }
     }
-
 }
diff --git a/SudokuButtonListener.java b/SudokuButtonListener.java
index d98533a..a88ac48 100644
--- a/SudokuButtonListener.java
+++ b/SudokuButtonListener.java
@@ -41,18 +41,19 @@ public class SudokuButtonListener implements ActionListener {
         if (input != null && input.length() > 0) {
             try {
                 int num = Integer.parseInt(input);
-                if (num >= 0 && num <= 9) { // Vérifie si le nombre est dans la plage autorisée
+                if (num >= 0 && num <= 9) {
                     sudoku.getGrid().getCell(row, col).setValue(num);
                     if (num == 0) {
-                        buttons[row][col].setText(""); // Case vide si le nombre est 0
+                        buttons[row][col].setText("");
                     } else {
                         buttons[row][col].setText(String.valueOf(num));
                     }
                     if (!isValid(num, row, col)) {
-                        buttons[row][col].setForeground(Color.RED); // Met le texte en rouge en cas de mouvement invalide
+                        buttons[row][col].setForeground(Color.RED);
                     } else {
-                        buttons[row][col].setForeground(Color.BLACK); // Réinitialise la couleur du texte
+                        buttons[row][col].setForeground(Color.BLACK);
                     }
+                    sudoku.checkIfGridIsSolved(); // Vérifier si la grille est résolue après chaque ajout de nombre
                 } else {
                     JOptionPane.showMessageDialog(null, "Veuillez entrer un nombre entre 0 et 9.");
                 }