88 lines
2.5 KiB
Java
Raw Permalink Normal View History

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;
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();
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-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.
*/
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.
*/
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.
*/
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() {
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-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.
*/
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
}
}
}