Modification de commentaires + correction de bugs
This commit is contained in:
parent
19bfa89148
commit
cdcbc4f485
@ -26,11 +26,19 @@ public class GMCase extends JPanel {
|
|||||||
*/
|
*/
|
||||||
protected boolean isActive = false;
|
protected boolean isActive = false;
|
||||||
|
|
||||||
|
private int row;
|
||||||
|
private int col;
|
||||||
|
private GMGrid grille;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur par défaut de GMCase.
|
* 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.
|
* 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.setOpaque(false);
|
||||||
actionButton.setContentAreaFilled(false);
|
actionButton.setContentAreaFilled(false);
|
||||||
actionButton.setBorderPainted(false);
|
actionButton.setBorderPainted(false);
|
||||||
@ -43,7 +51,7 @@ public class GMCase extends JPanel {
|
|||||||
setPreferredSize(new Dimension(60, 60));
|
setPreferredSize(new Dimension(60, 60));
|
||||||
|
|
||||||
// Crée un GMCaseListener et l'ajoute au bouton
|
// 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);
|
actionButton.addKeyListener(listener);
|
||||||
|
|
||||||
GMCaseMouseListener mouseListener = new GMCaseMouseListener();
|
GMCaseMouseListener mouseListener = new GMCaseMouseListener();
|
||||||
|
@ -1,22 +1,32 @@
|
|||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.event.KeyListener;
|
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
|
* @version 1.0
|
||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GMCaseKeyListener implements KeyListener {
|
public class GMCaseKeyListener implements KeyListener {
|
||||||
|
|
||||||
|
private GMChecker checker;
|
||||||
private GMCase gridMakerCase;
|
private GMCase gridMakerCase;
|
||||||
|
private GMCase gridMakerCaseCopy;
|
||||||
|
private GMGrid grille;
|
||||||
|
private int row;
|
||||||
|
private int col;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur de GridMakerCaseListener.
|
* Constructeur de GridMakerCaseListener.
|
||||||
* @param gridMakerCase La case à écouter.
|
* @param gridMakerCase La case à écouter.
|
||||||
*/
|
*/
|
||||||
public GMCaseKeyListener(GMCase gridMakerCase) {
|
public GMCaseKeyListener(GMCase gridMakerCase,GMGrid grille, int row, int col) {
|
||||||
this.gridMakerCase = gridMakerCase;
|
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
|
@Override
|
||||||
public void keyPressed(KeyEvent e) {
|
public void keyPressed(KeyEvent e) {
|
||||||
int keyChar = e.getKeyChar();
|
char keyChar = e.getKeyChar();
|
||||||
if (Character.isDigit(keyChar)) {
|
// Vérifier si la touche enfoncée est un chiffre entre 1 et 9
|
||||||
int num = Character.getNumericValue(keyChar);
|
if (Character.isDigit(keyChar) && keyChar >= '0' && keyChar <= '9') {
|
||||||
if (num >= 0 && num <= 9) {
|
int value = Character.getNumericValue(keyChar);
|
||||||
gridMakerCase.setCellValue(num);
|
// 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ public class GMGrid extends JPanel {
|
|||||||
for (int j = 0; j < 9; j++) {
|
for (int j = 0; j < 9; j++) {
|
||||||
int zoneRow = i / 3;
|
int zoneRow = i / 3;
|
||||||
int zoneCol = j / 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]);
|
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].setBorder(determineBorder(i, j)); // Utilisation de la fonction pour définir les bordures
|
||||||
gridCases[i][j].setBackground(Color.WHITE);
|
gridCases[i][j].setBackground(Color.WHITE);
|
||||||
|
@ -33,15 +33,11 @@ public class GSCase extends JPanel {
|
|||||||
public GSCase(GSGrid grid, int x, int y) {
|
public GSCase(GSGrid grid, int x, int y) {
|
||||||
this.positionX = x;
|
this.positionX = x;
|
||||||
this.positionY = y;
|
this.positionY = y;
|
||||||
|
|
||||||
this.primaryValue = 0; // Valeur par défaut
|
this.primaryValue = 0; // Valeur par défaut
|
||||||
|
|
||||||
this.setBackground(Color.white); // Couleur de fond par défaut
|
this.setBackground(Color.white); // Couleur de fond par défaut
|
||||||
|
|
||||||
this.parentGrid = grid;
|
this.parentGrid = grid;
|
||||||
this.add(label);
|
this.add(label);
|
||||||
layoutSetup();
|
layoutSetup();
|
||||||
|
|
||||||
// Initialisation de l'écouteur de souris
|
// Initialisation de l'écouteur de souris
|
||||||
this.mouseListener = new GSCaseMouseListener(this);
|
this.mouseListener = new GSCaseMouseListener(this);
|
||||||
this.addMouseListener(this.mouseListener);
|
this.addMouseListener(this.mouseListener);
|
||||||
|
Loading…
Reference in New Issue
Block a user