2024-05-05 17:32:57 +02:00
|
|
|
import javax.swing.JOptionPane;
|
|
|
|
|
2024-05-05 00:41:39 +02:00
|
|
|
/**
|
|
|
|
* 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.
|
|
|
|
*/
|
2024-04-28 01:40:14 +02:00
|
|
|
public class Sudoku {
|
|
|
|
private Grid grid;
|
2024-05-04 00:13:44 +02:00
|
|
|
private boolean solved;
|
2024-05-05 17:32:57 +02:00
|
|
|
private SudokuSolver solver;
|
2024-04-28 01:40:14 +02:00
|
|
|
|
2024-05-05 00:41:39 +02:00
|
|
|
/**
|
|
|
|
* Constructeur par défaut. Initialise un Sudoku avec une grille vide et non résolue.
|
|
|
|
*/
|
2024-04-28 01:40:14 +02:00
|
|
|
public Sudoku() {
|
2024-05-05 00:41:39 +02:00
|
|
|
this.grid = new Grid();
|
2024-05-04 00:13:44 +02:00
|
|
|
this.solved = false;
|
2024-05-05 17:32:57 +02:00
|
|
|
this.solver = new SudokuSolver();
|
2024-04-28 01:40:14 +02:00
|
|
|
}
|
2024-05-04 14:59:38 +02:00
|
|
|
|
2024-05-05 00:41:39 +02:00
|
|
|
/**
|
|
|
|
* Obtient la grille associée à ce Sudoku.
|
|
|
|
* @return La grille associée à ce Sudoku.
|
|
|
|
*/
|
2024-04-28 01:40:14 +02:00
|
|
|
public Grid getGrid() {
|
|
|
|
return grid;
|
|
|
|
}
|
|
|
|
|
2024-05-05 00:41:39 +02:00
|
|
|
/**
|
|
|
|
* Définit une nouvelle grille pour ce Sudoku.
|
|
|
|
* @param newGrid La nouvelle grille à définir.
|
|
|
|
*/
|
2024-05-04 00:13:44 +02:00
|
|
|
public void setGrid(Grid newGrid) {
|
|
|
|
this.grid = newGrid;
|
|
|
|
}
|
|
|
|
|
2024-05-05 00:41:39 +02:00
|
|
|
/**
|
|
|
|
* Vérifie si ce Sudoku est résolu.
|
|
|
|
* @return True si le Sudoku est résolu, False sinon.
|
|
|
|
*/
|
2024-05-04 00:13:44 +02:00
|
|
|
public boolean isSolved() {
|
|
|
|
return solved;
|
|
|
|
}
|
|
|
|
|
2024-05-05 00:41:39 +02:00
|
|
|
/**
|
|
|
|
* Charge une grille de Sudoku à partir d'un fichier.
|
|
|
|
* @param fileName Le nom du fichier à charger.
|
|
|
|
*/
|
2024-05-04 14:59:38 +02:00
|
|
|
public void loadGridFromFile(String fileName) {
|
|
|
|
this.grid.loadGridFromFile(fileName);
|
|
|
|
}
|
2024-05-05 17:32:57 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Vérifie si la grille est résolue.
|
|
|
|
*/
|
|
|
|
public void checkIfGridIsSolved() {
|
2024-05-06 16:31:58 +02:00
|
|
|
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.");
|
|
|
|
}
|
2024-05-05 17:32:57 +02:00
|
|
|
}
|
2024-05-06 16:31:58 +02:00
|
|
|
|
2024-05-04 00:13:44 +02:00
|
|
|
|
2024-05-05 00:41:39 +02:00
|
|
|
/**
|
|
|
|
* Imprime la grille de Sudoku sur la sortie standard.
|
|
|
|
* Chaque ligne de la grille est imprimée sur une ligne distincte.
|
|
|
|
*/
|
2024-05-04 00:13:44 +02:00
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|
2024-05-05 13:38:52 +02:00
|
|
|
}
|