Modification de commentaires + correction de bugs

This commit is contained in:
stiti 2024-04-30 12:51:21 +02:00
parent 19bfa89148
commit cdcbc4f485
4 changed files with 41 additions and 14 deletions

View File

@ -26,11 +26,19 @@ public class GMCase extends JPanel {
*/
protected boolean isActive = false;
private int row;
private int col;
private GMGrid grille;
/**
* Constructeur par défaut de GMCase.
* Initialise le bouton avec les propriétés nécessaires, crée un GMCaseListener et l'ajoute au bouton.
*/
public GMCase() {
public GMCase(GMGrid grille, int row, int col) {
this.grille = grille;
this.row = row;
this.col = col;
actionButton.setOpaque(false);
actionButton.setContentAreaFilled(false);
actionButton.setBorderPainted(false);
@ -43,7 +51,7 @@ public class GMCase extends JPanel {
setPreferredSize(new Dimension(60, 60));
// Crée un GMCaseListener et l'ajoute au bouton
GMCaseKeyListener listener = new GMCaseKeyListener(this);
GMCaseKeyListener listener = new GMCaseKeyListener(this,this.grille,this.row,this.col);
actionButton.addKeyListener(listener);
GMCaseMouseListener mouseListener = new GMCaseMouseListener();

View File

@ -1,22 +1,32 @@
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JOptionPane;
/**
* GMCaseKeyListener est un KeyListener utilisé pour écouter les événements de touche dans GridMakerCase.
* GMCaseKeyListener est un KeyListener utilisé pour écouter les événements de touche dans GMCase.
* @version 1.0
* @author Moncef STITI
* @author Marco ORFAO
*/
public class GMCaseKeyListener implements KeyListener {
private GMChecker checker;
private GMCase gridMakerCase;
private GMCase gridMakerCaseCopy;
private GMGrid grille;
private int row;
private int col;
/**
* Constructeur de GridMakerCaseListener.
* @param gridMakerCase La case à écouter.
*/
public GMCaseKeyListener(GMCase gridMakerCase) {
public GMCaseKeyListener(GMCase gridMakerCase,GMGrid grille, int row, int col) {
this.gridMakerCase = gridMakerCase;
this.grille = grille;
this.row = row;
this.col = col;
this.checker = new GMChecker(this.grille);
}
/**
@ -26,12 +36,25 @@ public class GMCaseKeyListener implements KeyListener {
*/
@Override
public void keyPressed(KeyEvent e) {
int keyChar = e.getKeyChar();
if (Character.isDigit(keyChar)) {
int num = Character.getNumericValue(keyChar);
if (num >= 0 && num <= 9) {
gridMakerCase.setCellValue(num);
char keyChar = e.getKeyChar();
// Vérifier si la touche enfoncée est un chiffre entre 1 et 9
if (Character.isDigit(keyChar) && keyChar >= '0' && keyChar <= '9') {
int value = Character.getNumericValue(keyChar);
// Sauvegarder temporairement la valeur actuelle de la case
int previousValue = gridMakerCase.getCellValue();
// Mettre temporairement la nouvelle valeur dans la case
gridMakerCase.setCellValue(value);
// Vérifier si la grille respecte les règles du Sudoku
if (checker.checkGrid()) {
// Si oui, pas besoin de faire autre chose car la valeur est déjà mise à jour
} else {
// Si non, restaurer la valeur précédente et afficher un message d'erreur
gridMakerCase.setCellValue(previousValue);
JOptionPane.showMessageDialog(null, "La valeur ne respecte pas les règles du Sudoku.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
} else {
// Afficher un message d'erreur si la touche enfoncée n'est pas valide
JOptionPane.showMessageDialog(null, "Veuillez entrer un chiffre entre 1 et 9.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
}

View File

@ -51,7 +51,7 @@ public class GMGrid extends JPanel {
for (int j = 0; j < 9; j++) {
int zoneRow = i / 3;
int zoneCol = j / 3;
gridCases[i][j] = new GMCase();
gridCases[i][j] = new GMCase(this,i,j);
zones[zoneRow][zoneCol].add(gridCases[i][j]);
gridCases[i][j].setBorder(determineBorder(i, j)); // Utilisation de la fonction pour définir les bordures
gridCases[i][j].setBackground(Color.WHITE);

View File

@ -33,15 +33,11 @@ public class GSCase extends JPanel {
public GSCase(GSGrid grid, int x, int y) {
this.positionX = x;
this.positionY = y;
this.primaryValue = 0; // Valeur par défaut
this.setBackground(Color.white); // Couleur de fond par défaut
this.parentGrid = grid;
this.add(label);
layoutSetup();
// Initialisation de l'écouteur de souris
this.mouseListener = new GSCaseMouseListener(this);
this.addMouseListener(this.mouseListener);