Fix le fait de pouvoir écrire un nombre plus grand que 9 et plus petit que 0

This commit is contained in:
David AKAGUNDUZ 2024-05-05 02:35:21 +02:00
parent 18bb7034a8
commit 186539e34c

@ -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;
}
}
}