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."); }