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.
85
Main.java
85
Main.java
@ -6,37 +6,69 @@ public class Main {
|
|||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.out.println("Le programme Main a démarré.");
|
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
|
int[][] grille = GenerateurSudoku.genererGrille(); // Obtenir la grille par défaut
|
||||||
System.out.println("Grille Sudoku générée avec succès.");
|
System.out.println("Grille Sudoku générée avec succès.");
|
||||||
|
|
||||||
JFrame frame = new JFrame("Sudoku");
|
// Résoudre automatiquement le Sudoku
|
||||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
||||||
SaisieGrille saisieGrille = new SaisieGrille(grille); // Utilisation de la classe SaisieGrille pour permettre la saisie des valeurs
|
|
||||||
|
|
||||||
// Panneau pour contenir les boutons
|
|
||||||
JPanel boutonsPanel = new JPanel();
|
|
||||||
boutonsPanel.setLayout(new FlowLayout());
|
|
||||||
|
|
||||||
// Bouton "Résoudre"
|
|
||||||
JButton resoudreButton = new JButton("Résoudre");
|
|
||||||
resoudreButton.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
long startTime = System.nanoTime(); // Temps avant la résolution
|
|
||||||
|
|
||||||
if (Resolveur.resoudreSudoku(grille)) {
|
if (Resolveur.resoudreSudoku(grille)) {
|
||||||
long endTime = System.nanoTime(); // Temps après la résolution
|
// Créer et afficher la fenêtre principale avec la grille résolue
|
||||||
long duration = (endTime - startTime) / 1000000; // Durée en millisecondes
|
afficherFenetre(grille, true);
|
||||||
|
|
||||||
saisieGrille.repaint(); // Redessiner la grille après la résolution
|
|
||||||
JOptionPane.showMessageDialog(frame, "Grille résolue avec succès en " + duration + " millisecondes !");
|
|
||||||
} else {
|
} else {
|
||||||
JOptionPane.showMessageDialog(frame, "Impossible de résoudre la grille.");
|
JOptionPane.showMessageDialog(null, "Impossible de résoudre la grille.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Bouton "Réinitialiser"
|
// 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");
|
JButton reinitialiserButton = new JButton("Réinitialiser");
|
||||||
reinitialiserButton.addActionListener(new ActionListener() {
|
reinitialiserButton.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -46,13 +78,10 @@ public class Main {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Ajout des boutons au panneau
|
frame.add(reinitialiserButton, BorderLayout.SOUTH); // Ajouter le bouton "Réinitialiser"
|
||||||
boutonsPanel.add(resoudreButton);
|
}
|
||||||
boutonsPanel.add(reinitialiserButton);
|
|
||||||
|
|
||||||
// Ajout des composants au frame
|
frame.add(saisieGrille, BorderLayout.CENTER); // Ajouter la grille à la fenêtre
|
||||||
frame.add(saisieGrille, BorderLayout.CENTER);
|
|
||||||
frame.add(boutonsPanel, BorderLayout.SOUTH);
|
|
||||||
|
|
||||||
frame.pack();
|
frame.pack();
|
||||||
frame.setLocationRelativeTo(null); // Centrer la fenêtre sur l'écran
|
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