SAE21_2023/Main.java

93 lines
3.9 KiB
Java
Raw Normal View History

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
}
}