diff --git a/CaseMouseListener.class b/CaseMouseListener.class index 501b09a..fd52052 100644 Binary files a/CaseMouseListener.class and b/CaseMouseListener.class differ diff --git a/CaseMouseListener.java b/CaseMouseListener.java index 8b7d38c..e9bb759 100644 --- a/CaseMouseListener.java +++ b/CaseMouseListener.java @@ -17,17 +17,58 @@ public class CaseMouseListener extends MouseAdapter { panel.setColonneSelectionnee(x); System.out.println("Case sélectionnée : (" + panel.getLigneSelectionnee() + ", " + panel.getColonneSelectionnee() + ")"); if (panel.getGrilleInitiale()[panel.getLigneSelectionnee()][panel.getColonneSelectionnee()] == 0) { - String valeurStr = JOptionPane.showInputDialog(null, "Entrez la valeur pour la cellule sélectionnée :"); - try { - int valeur = Integer.parseInt(valeurStr); - if (panel.validerChiffre(panel.getLigneSelectionnee(), panel.getColonneSelectionnee(), valeur)) { - panel.getGrille()[panel.getLigneSelectionnee()][panel.getColonneSelectionnee()] = valeur; - panel.repaint(); - } else { - JOptionPane.showMessageDialog(null, "Ce chiffre ne respecte pas les contraintes du Sudoku. Veuillez choisir un autre chiffre."); + String[] options = {"Incertain", "Valider"}; + JTextField textField = new JTextField(); + Object[] message = { + "Entrez la valeur pour la cellule sélectionnée :", + textField + }; + int option = JOptionPane.showOptionDialog(null, message, "Entrez un nombre", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]); + if (option == 1) { + String valeurStr = textField.getText(); + try { + int valeur = Integer.parseInt(valeurStr); + if (panel.validerChiffre(panel.getLigneSelectionnee(), panel.getColonneSelectionnee(), valeur)) { + panel.getGrille()[panel.getLigneSelectionnee()][panel.getColonneSelectionnee()] = valeur; + panel.repaint(); + } else { + JOptionPane.showMessageDialog(null, "Ce chiffre ne respecte pas les contraintes du Sudoku. Veuillez choisir un autre chiffre."); + } + } catch (NumberFormatException ex) { + JOptionPane.showMessageDialog(null, "Saisie invalide. Veuillez entrer un nombre."); + } + } else if (option == 0) { + // Le joueur a choisi "Incertain" + JTextField[] incertainFields = new JTextField[4]; + for (int i = 0; i < 4; i++) { + incertainFields[i] = new JTextField(); + } + Object[] incertainMessage = { + "Entrez les valeurs incertaines pour la cellule sélectionnée :", + "Valeur 1 (obligatoire):", incertainFields[0], + "Valeur 2 (obligatoire):", incertainFields[1], + "Valeur 3 (optionnelle):", incertainFields[2], + "Valeur 4 (optionnelle):", incertainFields[3] + }; + int incertainOption = JOptionPane.showOptionDialog(null, incertainMessage, "Entrez les valeurs incertaines", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null); + if (incertainOption == JOptionPane.OK_OPTION) { + // Vérifier que les valeurs obligatoires sont remplies + if (!incertainFields[0].getText().isEmpty() && !incertainFields[1].getText().isEmpty()) { + // Récupérer les valeurs incertaines saisies par le joueur + int valeursIncertaines = 0; + for (int i = 0; i < 4; i++) { + if (!incertainFields[i].getText().isEmpty()) { + int valeur = Integer.parseInt(incertainFields[i].getText()); + valeursIncertaines |= (valeur << (i * 4)); + } + } + // Mettre à jour la grille avec les valeurs incertaines + panel.getGrille()[panel.getLigneSelectionnee()][panel.getColonneSelectionnee()] = valeursIncertaines; + panel.repaint(); + } else { + JOptionPane.showMessageDialog(null, "Les deux premières valeurs incertaines sont obligatoires."); + } } - } catch (NumberFormatException ex) { - JOptionPane.showMessageDialog(null, "Saisie invalide. Veuillez entrer un nombre."); } } else { JOptionPane.showMessageDialog(null, "Vous ne pouvez pas modifier la valeur par défaut.");