SAE21_2023/Main.java
2024-04-03 12:18:48 +02:00

58 lines
2.2 KiB
Java

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Main {
public static void main(String[] args) {
System.out.println("Le programme Main a démarré.");
int[][] grid = SudokuGenerator.readGridFromFile(); // Demander à l'utilisateur de sélectionner un fichier de grille
System.out.println("Grille Sudoku générée à partir du fichier avec succès.");
JFrame frame = new JFrame("Sudoku");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Enter enterPanel = new Enter(grid); // Utilisation de la classe Enter pour permettre la saisie des valeurs
// Ajout de deux boutons
JButton solveButton = new JButton("Solve");
JButton resetButton = new JButton("Reset");
JPanel buttonPanel = new JPanel();
buttonPanel.add(solveButton);
buttonPanel.add(resetButton);
// Ajout des composants au frame
frame.add(enterPanel, BorderLayout.CENTER);
frame.add(buttonPanel, BorderLayout.SOUTH);
// Ajout de l'écouteur d'événements au bouton "Reset"
resetButton.addActionListener(new Reset(grid, enterPanel));
// Ajout de l'écouteur d'événements au bouton "Solve"
solveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
long startTime = System.nanoTime(); // Temps avant la résolution
if (Resolve.solveSudoku(grid)) {
long endTime = System.nanoTime(); // Temps après la résolution
long duration = (endTime - startTime) / 1000000; // Durée en millisecondes
enterPanel.repaint(); // Redessiner la grille après la résolution
JOptionPane.showMessageDialog(frame, "Grille résolue avec succès en " + duration + " millisecondes !");
} else {
JOptionPane.showMessageDialog(frame, "Impossible de résoudre la grille.");
}
}
});
frame.pack();
frame.setLocationRelativeTo(null); // Centrer la fenêtre sur l'écran
frame.setVisible(true);
System.out.println("La fenêtre Sudoku a été affichée.");
}
}