SAE21_2023/Main.java
2024-04-06 22:10:12 +02:00

93 lines
3.9 KiB
Java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main {
public static void main(String[] args) {
System.out.println("Le programme Main a démarré.");
// 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
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");
JPanel boutonsPanel = new JPanel();
boutonsPanel.setLayout(new FlowLayout());
boutonsPanel.add(automatiqueButton);
boutonsPanel.add(manuelButton);
choixFrame.add(label, BorderLayout.NORTH);
choixFrame.add(boutonsPanel, BorderLayout.CENTER);
choixFrame.setVisible(true);
// Gestion du bouton "Automatique"
automatiqueButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
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.");
// 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);
} else {
JOptionPane.showMessageDialog(null, "Impossible de résoudre la grille.");
}
}
});
// Gestion du bouton "Manuel"
manuelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
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);
}
});
}
// 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);
}
});
frame.add(reinitialiserButton, BorderLayout.SOUTH); // Ajouter le bouton "Réinitialiser"
}
frame.add(saisieGrille, BorderLayout.CENTER); // Ajouter la grille à la fenêtre
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.");
}
}