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, * l'impression de la grille et la vérification de l'état de résolution. */ 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. */ public Sudoku() { this.grid = new Grid(); this.solved = false; this.solver = new SudokuSolver(); } /** * Obtient la grille associée à ce Sudoku. * @return La grille associée à ce Sudoku. */ public Grid getGrid() { return grid; } /** * Définit une nouvelle grille pour ce Sudoku. * @param newGrid La nouvelle grille à définir. */ public void setGrid(Grid newGrid) { this.grid = newGrid; } /** * Vérifie si ce Sudoku est résolu. * @return True si le Sudoku est résolu, False sinon. */ public boolean isSolved() { return solved; } /** * Charge une grille de Sudoku à partir d'un fichier. * @param fileName Le nom du fichier à charger. */ public void loadGridFromFile(String fileName) { this.grid.loadGridFromFile(fileName); } /** * Vérifie si la grille est résolue. */ public void checkIfGridIsSolved() { Grid grid = getGrid(); if (!grid.isFull()) { return; } this.solved = solver.solve(grid); if (this.solved) { JOptionPane.showMessageDialog(null, "Félicitations ! Vous avez résolu la grille avec succès !"); } else { JOptionPane.showMessageDialog(null, "Désolé, la grille est complète mais la solution n'est pas correcte."); } } /** * Imprime la grille de Sudoku sur la sortie standard. * Chaque ligne de la grille est imprimée sur une ligne distincte. */ public void printGrid() { for (int row = 0; row < 9; row++) { for (int col = 0; col < 9; col++) { int value = grid.getCell(row, col).getValue(); System.out.print(value + " "); } System.out.println(); // Passer à la ligne suivante après chaque ligne de la grille } } }