From 186539e34c8f5d123c76083d9bb6c45ff68ee0b4 Mon Sep 17 00:00:00 2001
From: akagundu <david.akagunduz@gmail.com>
Date: Sun, 5 May 2024 02:35:21 +0200
Subject: [PATCH] =?UTF-8?q?Fix=20le=20fait=20de=20pouvoir=20=C3=A9crire=20?=
 =?UTF-8?q?un=20nombre=20plus=20grand=20que=209=20et=20plus=20petit=20que?=
 =?UTF-8?q?=200?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 SudokuButtonListener.java | 42 ++++++++++++++++++++++++---------------
 1 file changed, 26 insertions(+), 16 deletions(-)

diff --git a/SudokuButtonListener.java b/SudokuButtonListener.java
index 242aa1f..d98533a 100644
--- a/SudokuButtonListener.java
+++ b/SudokuButtonListener.java
@@ -16,9 +16,10 @@ public class SudokuButtonListener implements ActionListener {
 
     /**
      * Constructeur de SudokuButtonListener.
-     * @param row L'indice de ligne du bouton.
-     * @param col L'indice de colonne du bouton.
-     * @param sudoku L'instance de Sudoku associée à l'interface utilisateur.
+     *
+     * @param row     L'indice de ligne du bouton.
+     * @param col     L'indice de colonne du bouton.
+     * @param sudoku  L'instance de Sudoku associée à l'interface utilisateur.
      * @param buttons La grille de boutons associée à l'interface utilisateur.
      */
     public SudokuButtonListener(int row, int col, Sudoku sudoku, JButton[][] buttons) {
@@ -31,6 +32,7 @@ public class SudokuButtonListener implements ActionListener {
     /**
      * Méthode invoquée lorsque le bouton associé à ce listener est cliqué.
      * Affiche une boîte de dialogue demandant à l'utilisateur d'entrer un nombre, puis met à jour la grille de Sudoku.
+     *
      * @param e L'événement ActionEvent associé au clic du bouton.
      */
     @Override
@@ -39,16 +41,20 @@ public class SudokuButtonListener implements ActionListener {
         if (input != null && input.length() > 0) {
             try {
                 int num = Integer.parseInt(input);
-                sudoku.getGrid().getCell(row, col).setValue(num);
-                if (num == 0) {
-                    buttons[row][col].setText(""); // Case vide si le nombre est 0
+                if (num >= 0 && num <= 9) { // Vérifie si le nombre est dans la plage autorisée
+                    sudoku.getGrid().getCell(row, col).setValue(num);
+                    if (num == 0) {
+                        buttons[row][col].setText(""); // Case vide si le nombre est 0
+                    } else {
+                        buttons[row][col].setText(String.valueOf(num));
+                    }
+                    if (!isValid(num, row, col)) {
+                        buttons[row][col].setForeground(Color.RED); // Met le texte en rouge en cas de mouvement invalide
+                    } else {
+                        buttons[row][col].setForeground(Color.BLACK); // Réinitialise la couleur du texte
+                    }
                 } else {
-                    buttons[row][col].setText(String.valueOf(num));
-                }
-                if (!isValid(num, row, col)) {
-                    buttons[row][col].setForeground(Color.RED); // Met le texte en rouge en cas de mouvement invalide
-                } else {
-                    buttons[row][col].setForeground(Color.BLACK); // Réinitialise la couleur du texte
+                    JOptionPane.showMessageDialog(null, "Veuillez entrer un nombre entre 0 et 9.");
                 }
             } catch (NumberFormatException ex) {
                 JOptionPane.showMessageDialog(null, "Veuillez entrer un nombre valide.");
@@ -58,6 +64,7 @@ public class SudokuButtonListener implements ActionListener {
 
     /**
      * Vérifie si le nombre entré est valide pour la position donnée dans la grille de Sudoku.
+     *
      * @param num Le nombre entré par l'utilisateur.
      * @param row L'indice de ligne de la cellule dans la grille.
      * @param col L'indice de colonne de la cellule dans la grille.
@@ -69,6 +76,7 @@ public class SudokuButtonListener implements ActionListener {
 
     /**
      * Vérifie si le nombre est valide dans la ligne donnée de la grille de Sudoku.
+     *
      * @param num Le nombre entré par l'utilisateur.
      * @param row L'indice de ligne de la cellule dans la grille.
      * @return True si le nombre est valide dans cette ligne, False sinon.
@@ -84,6 +92,7 @@ public class SudokuButtonListener implements ActionListener {
 
     /**
      * Vérifie si le nombre est valide dans la colonne donnée de la grille de Sudoku.
+     *
      * @param num Le nombre entré par l'utilisateur.
      * @param col L'indice de colonne de la cellule dans la grille.
      * @return True si le nombre est valide dans cette colonne, False sinon.
@@ -99,9 +108,10 @@ public class SudokuButtonListener implements ActionListener {
 
     /**
      * Vérifie si le nombre est valide dans la boîte 3x3 contenant la cellule donnée.
-     * @param num Le nombre entré par l'utilisateur.
-     * @param boxStartRow L'indice de ligne du coin supérieur gauche de la boîte.
-     * @param boxStartCol L'indice de colonne du coin supérieur gauche de la boîte.
+     *
+     * @param num          Le nombre entré par l'utilisateur.
+     * @param boxStartRow  L'indice de ligne du coin supérieur gauche de la boîte.
+     * @param boxStartCol  L'indice de colonne du coin supérieur gauche de la boîte.
      * @return True si le nombre est valide dans cette boîte, False sinon.
      */
     private boolean isValidBox(int num, int boxStartRow, int boxStartCol) {
@@ -116,4 +126,4 @@ public class SudokuButtonListener implements ActionListener {
         }
         return true;
     }
-}
\ No newline at end of file
+}