2024-04-03 10:46:17 +02:00
|
|
|
import javax.swing.*;
|
2024-04-06 20:23:50 +02:00
|
|
|
import java.awt.*;
|
|
|
|
import java.awt.event.*;
|
2024-04-02 16:20:29 +02:00
|
|
|
|
|
|
|
public class Main {
|
|
|
|
public static void main(String[] args) {
|
2024-04-03 11:25:04 +02:00
|
|
|
System.out.println("Le programme Main a démarré.");
|
|
|
|
|
2024-04-06 22:10:12 +02:00
|
|
|
// Création de la fenêtre de dialogue pour choisir le mode de résolution
|
|
|
|
JFrame choixFrame = new JFrame("Choix de résolution du Sudoku");
|
|
|
|
choixFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
|
choixFrame.setSize(400, 200);
|
|
|
|
choixFrame.setLayout(new BorderLayout());
|
|
|
|
choixFrame.setLocationRelativeTo(null); // Centrer la fenêtre sur l'écran
|
2024-04-03 10:46:17 +02:00
|
|
|
|
2024-04-06 22:10:12 +02:00
|
|
|
JLabel label = new JLabel("Choisissez le mode de résolution du Sudoku :");
|
|
|
|
label.setHorizontalAlignment(JLabel.CENTER);
|
|
|
|
|
|
|
|
JButton automatiqueButton = new JButton("Automatique");
|
|
|
|
JButton manuelButton = new JButton("Manuel");
|
2024-04-06 20:23:50 +02:00
|
|
|
|
|
|
|
JPanel boutonsPanel = new JPanel();
|
|
|
|
boutonsPanel.setLayout(new FlowLayout());
|
2024-04-06 22:10:12 +02:00
|
|
|
boutonsPanel.add(automatiqueButton);
|
|
|
|
boutonsPanel.add(manuelButton);
|
2024-04-06 20:23:50 +02:00
|
|
|
|
2024-04-06 22:10:12 +02:00
|
|
|
choixFrame.add(label, BorderLayout.NORTH);
|
|
|
|
choixFrame.add(boutonsPanel, BorderLayout.CENTER);
|
|
|
|
choixFrame.setVisible(true);
|
|
|
|
|
|
|
|
// Gestion du bouton "Automatique"
|
|
|
|
automatiqueButton.addActionListener(new ActionListener() {
|
2024-04-06 20:23:50 +02:00
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
2024-04-06 22:10:12 +02:00
|
|
|
choixFrame.dispose(); // Fermer la fenêtre de choix
|
2024-04-06 20:23:50 +02:00
|
|
|
|
2024-04-06 22:10:12 +02:00
|
|
|
int[][] grille = GenerateurSudoku.genererGrille(); // Obtenir la grille par défaut
|
|
|
|
System.out.println("Grille Sudoku générée avec succès.");
|
2024-04-06 20:23:50 +02:00
|
|
|
|
2024-04-06 22:10:12 +02:00
|
|
|
// Résoudre automatiquement le Sudoku
|
|
|
|
if (Resolveur.resoudreSudoku(grille)) {
|
|
|
|
// Créer et afficher la fenêtre principale avec la grille résolue
|
|
|
|
afficherFenetre(grille, true);
|
2024-04-06 20:23:50 +02:00
|
|
|
} else {
|
2024-04-06 22:10:12 +02:00
|
|
|
JOptionPane.showMessageDialog(null, "Impossible de résoudre la grille.");
|
2024-04-06 20:23:50 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2024-04-06 22:10:12 +02:00
|
|
|
// Gestion du bouton "Manuel"
|
|
|
|
manuelButton.addActionListener(new ActionListener() {
|
2024-04-06 20:23:50 +02:00
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
2024-04-06 22:10:12 +02:00
|
|
|
choixFrame.dispose(); // Fermer la fenêtre de choix
|
|
|
|
|
|
|
|
int[][] grille = GenerateurSudoku.genererGrille(); // Obtenir la grille par défaut
|
|
|
|
System.out.println("Grille Sudoku générée avec succès.");
|
|
|
|
|
|
|
|
// Créer et afficher la fenêtre principale pour la saisie manuelle
|
|
|
|
afficherFenetre(grille, false);
|
2024-04-06 20:23:50 +02:00
|
|
|
}
|
|
|
|
});
|
2024-04-06 22:10:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Fonction pour créer et afficher la fenêtre principale avec la grille spécifiée
|
|
|
|
private static void afficherFenetre(int[][] grille, boolean modeAutomatique) {
|
|
|
|
JFrame frame = new JFrame("Sudoku");
|
|
|
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
|
SaisieGrille saisieGrille = new SaisieGrille(grille); // Utilisation de la classe SaisieGrille pour permettre la saisie des valeurs
|
|
|
|
|
|
|
|
if (!modeAutomatique) { // Ajouter le bouton "Réinitialiser" seulement en mode manuel
|
|
|
|
JButton reinitialiserButton = new JButton("Réinitialiser");
|
|
|
|
reinitialiserButton.addActionListener(new ActionListener() {
|
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
Reinitialiser reinitialiser = new Reinitialiser(grille, saisieGrille);
|
|
|
|
reinitialiser.actionPerformed(e);
|
|
|
|
}
|
|
|
|
});
|
2024-04-06 20:23:50 +02:00
|
|
|
|
2024-04-06 22:10:12 +02:00
|
|
|
frame.add(reinitialiserButton, BorderLayout.SOUTH); // Ajouter le bouton "Réinitialiser"
|
|
|
|
}
|
2024-04-03 11:51:47 +02:00
|
|
|
|
2024-04-06 22:10:12 +02:00
|
|
|
frame.add(saisieGrille, BorderLayout.CENTER); // Ajouter la grille à la fenêtre
|
2024-04-03 12:13:16 +02:00
|
|
|
|
2024-04-03 10:46:17 +02:00
|
|
|
frame.pack();
|
|
|
|
frame.setLocationRelativeTo(null); // Centrer la fenêtre sur l'écran
|
|
|
|
frame.setVisible(true);
|
2024-04-03 11:25:04 +02:00
|
|
|
|
|
|
|
System.out.println("La fenêtre Sudoku a été affichée.");
|
2024-04-02 16:20:29 +02:00
|
|
|
}
|
|
|
|
}
|