Auto
This commit is contained in:
parent
c818eec943
commit
ee478f0563
BIN
Grilles/exemple.gri
Normal file
BIN
Grilles/exemple.gri
Normal file
Binary file not shown.
BIN
Main$1.class
BIN
Main$1.class
Binary file not shown.
BIN
Main$2.class
BIN
Main$2.class
Binary file not shown.
BIN
Main$3.class
Normal file
BIN
Main$3.class
Normal file
Binary file not shown.
BIN
Main$4.class
Normal file
BIN
Main$4.class
Normal file
Binary file not shown.
BIN
Main.class
BIN
Main.class
Binary file not shown.
83
Main.java
83
Main.java
@ -6,53 +6,82 @@ public class Main {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Le programme Main a démarré.");
|
||||
|
||||
int[][] grille = GenerateurSudoku.genererGrille(); // Obtenir la grille par défaut
|
||||
System.out.println("Grille Sudoku générée avec succès.");
|
||||
// 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
|
||||
|
||||
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
|
||||
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");
|
||||
|
||||
// Panneau pour contenir les boutons
|
||||
JPanel boutonsPanel = new JPanel();
|
||||
boutonsPanel.setLayout(new FlowLayout());
|
||||
boutonsPanel.add(automatiqueButton);
|
||||
boutonsPanel.add(manuelButton);
|
||||
|
||||
// Bouton "Résoudre"
|
||||
JButton resoudreButton = new JButton("Résoudre");
|
||||
resoudreButton.addActionListener(new ActionListener() {
|
||||
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) {
|
||||
long startTime = System.nanoTime(); // Temps avant la résolution
|
||||
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)) {
|
||||
long endTime = System.nanoTime(); // Temps après la résolution
|
||||
long duration = (endTime - startTime) / 1000000; // Durée en millisecondes
|
||||
|
||||
saisieGrille.repaint(); // Redessiner la grille après la résolution
|
||||
JOptionPane.showMessageDialog(frame, "Grille résolue avec succès en " + duration + " millisecondes !");
|
||||
// Créer et afficher la fenêtre principale avec la grille résolue
|
||||
afficherFenetre(grille, true);
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(frame, "Impossible de résoudre la grille.");
|
||||
JOptionPane.showMessageDialog(null, "Impossible de résoudre la grille.");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Bouton "Réinitialiser"
|
||||
JButton reinitialiserButton = new JButton("Réinitialiser");
|
||||
reinitialiserButton.addActionListener(new ActionListener() {
|
||||
// Gestion du bouton "Manuel"
|
||||
manuelButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Reinitialiser reinitialiser = new Reinitialiser(grille, saisieGrille);
|
||||
reinitialiser.actionPerformed(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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Ajout des boutons au panneau
|
||||
boutonsPanel.add(resoudreButton);
|
||||
boutonsPanel.add(reinitialiserButton);
|
||||
// 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
|
||||
|
||||
// Ajout des composants au frame
|
||||
frame.add(saisieGrille, BorderLayout.CENTER);
|
||||
frame.add(boutonsPanel, BorderLayout.SOUTH);
|
||||
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
|
||||
|
BIN
OuvertureFichier.class
Normal file
BIN
OuvertureFichier.class
Normal file
Binary file not shown.
27
OuvertureFichier.java
Normal file
27
OuvertureFichier.java
Normal file
@ -0,0 +1,27 @@
|
||||
import java.io.*;
|
||||
|
||||
public class OuvertureFichier {
|
||||
public static int[][] lireFichier(File fichier) {
|
||||
int[][] grille = new int[9][9];
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(fichier))) {
|
||||
String ligne;
|
||||
int i = 0;
|
||||
while ((ligne = br.readLine()) != null && i < 9) {
|
||||
for (int j = 0; j < Math.min(ligne.length(), 9); j++) {
|
||||
char caractere = ligne.charAt(j);
|
||||
if (caractere != ' ') {
|
||||
// Convertir chaque caractère en valeur numérique
|
||||
int valeur = Integer.parseInt(String.valueOf(caractere), 16);
|
||||
grille[i][j] = valeur;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return grille;
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user