Ajout de GridSolver - Avant modification + jointure des classes
This commit is contained in:
56
src/GridSolver/GSSolver.java
Executable file
56
src/GridSolver/GSSolver.java
Executable file
@@ -0,0 +1,56 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* La classe GSSolver résout une grille de Sudoku et affiche le résultat dans une fenêtre.
|
||||
* @version 1.O
|
||||
* @author Moncef STITI
|
||||
* @author Marco ORFAO
|
||||
*/
|
||||
public class GSSolver {
|
||||
|
||||
private GSGrid grid; // Grille de Sudoku à résoudre
|
||||
private Window window; // Fenêtre dans laquelle afficher la résolution
|
||||
private JLabel label = new JLabel("Resolution en cours..."); // Étiquette pour afficher le statut de la résolution
|
||||
private long startTime; // Temps de début de la résolution
|
||||
|
||||
/**
|
||||
* Constructeur de la classe GSSolver.
|
||||
* @param grid La grille de Sudoku à résoudre.
|
||||
* @param window La fenêtre dans laquelle afficher la résolution.
|
||||
*/
|
||||
public GSSolver(GSGrid grid, Window window) {
|
||||
this.grid = grid;
|
||||
this.window = window;
|
||||
Window.removeAllComponents(this.window); // Efface tous les composants de la fenêtre
|
||||
this.window.setPageTitle("Résolution automatique");
|
||||
this.startSolving(); // Démarre la résolution
|
||||
}
|
||||
|
||||
/**
|
||||
* Démarre le processus de résolution de la grille de Sudoku.
|
||||
*/
|
||||
private void startSolving() {
|
||||
startTime = System.nanoTime(); // Enregistre le temps de début de la résolution
|
||||
BorderLayout layout = new BorderLayout(); // Gestionnaire de mise en page pour la fenêtre
|
||||
window.setLayout(layout); // Définit le gestionnaire de mise en page pour la fenêtre
|
||||
window.getContentPane().add(label, BorderLayout.SOUTH); // Ajoute l'étiquette au bas de la fenêtre
|
||||
window.getContentPane().add(grid, BorderLayout.CENTER); // Ajoute la grille au centre de la fenêtre
|
||||
grid.solve(); // Résout la grille de Sudoku
|
||||
|
||||
// Vérifie si le jeu est terminé
|
||||
if (isGameOver()) {
|
||||
double time = (double) (System.nanoTime() - startTime) / 1_000_000_000; // Calcule le temps écoulé en secondes
|
||||
label.setText("Résolu en " + time + " secondes."); // Met à jour le texte de l'étiquette avec le temps écoulé
|
||||
label.setForeground(Color.WHITE); // Définit la couleur du texte sur blanc
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si le jeu est terminé.
|
||||
* @return true si le jeu est terminé, false sinon.
|
||||
*/
|
||||
private boolean isGameOver() {
|
||||
return !grid.isComplete(); // Vérifie si la grille est complète
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user