This commit is contained in:
2024-04-03 12:25:19 +02:00
parent 3c29242a61
commit 1333177f88
10 changed files with 56 additions and 26 deletions
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+56 -26
View File
@@ -36,8 +36,12 @@ public class Enter extends JPanel {
String valueStr = JOptionPane.showInputDialog(null, "Enter value for the selected cell:");
try {
int value = Integer.parseInt(valueStr);
grid[selectedRow][selectedCol] = value;
repaint();
if (isValidValue(value, selectedRow, selectedCol)) {
grid[selectedRow][selectedCol] = value;
repaint();
} else {
JOptionPane.showMessageDialog(null, "Not possible.");
}
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Invalid input. Please enter a number.");
}
@@ -50,41 +54,67 @@ public class Enter extends JPanel {
}
public int[][] getInitialGrid() {
return initialGrid;
return initialGrid;
}
private boolean isValidValue(int value, int row, int col) {
// Vérifier la ligne
for (int i = 0; i < grid[row].length; i++) {
if (grid[row][i] == value && i != col) {
return false;
}
}
// Vérifier la colonne
for (int i = 0; i < grid.length; i++) {
if (grid[i][col] == value && i != row) {
return false;
}
}
// Vérifier la région
int regionRow = row / REGION_SIZE * REGION_SIZE;
int regionCol = col / REGION_SIZE * REGION_SIZE;
for (int i = regionRow; i < regionRow + REGION_SIZE; i++) {
for (int j = regionCol; j < regionCol + REGION_SIZE; j++) {
if (grid[i][j] == value && (i != row || j != col)) {
return false;
}
}
}
return true;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
super.paintComponent(g);
// Dessiner les contours de la grille (en gras)
Graphics2D g2d = (Graphics2D) g;
Stroke oldStroke = g2d.getStroke(); // Sauvegarder le style de ligne précédent
g2d.setStroke(new BasicStroke(4)); // Épaisseur de ligne de 4 pixels
// Dessiner les contours de la grille (en gras)
Graphics2D g2d = (Graphics2D) g;
Stroke oldStroke = g2d.getStroke(); // Sauvegarder le style de ligne précédent
g2d.setStroke(new BasicStroke(4)); // Épaisseur de ligne de 4 pixels
for (int i = 0; i <= GRID_SIZE * REGION_SIZE; i++) {
if (i % REGION_SIZE == 0) {
g2d.drawLine(0, i * CELL_SIZE, GRID_SIZE * REGION_SIZE * CELL_SIZE, i * CELL_SIZE);
g2d.drawLine(i * CELL_SIZE, 0, i * CELL_SIZE, GRID_SIZE * REGION_SIZE * CELL_SIZE);
for (int i = 0; i <= GRID_SIZE * REGION_SIZE; i++) {
if (i % REGION_SIZE == 0) {
g2d.drawLine(0, i * CELL_SIZE, GRID_SIZE * REGION_SIZE * CELL_SIZE, i * CELL_SIZE);
g2d.drawLine(i * CELL_SIZE, 0, i * CELL_SIZE, GRID_SIZE * REGION_SIZE * CELL_SIZE);
}
}
}
// Rétablir le style de ligne précédent
g2d.setStroke(oldStroke);
// Rétablir le style de ligne précédent
g2d.setStroke(oldStroke);
// Dessiner les cases de la grille
for (int i = 0; i < GRID_SIZE * REGION_SIZE; i++) {
for (int j = 0; j < GRID_SIZE * REGION_SIZE; j++) {
g.setColor(Color.BLACK);
g.drawRect(j * CELL_SIZE, i * CELL_SIZE, CELL_SIZE, CELL_SIZE);
int value = grid[i][j];
if (value != 0) {
g.drawString(String.valueOf(value), j * CELL_SIZE + CELL_SIZE / 2, i * CELL_SIZE + CELL_SIZE / 2);
// Dessiner les cases de la grille
for (int i = 0; i < GRID_SIZE * REGION_SIZE; i++) {
for (int j = 0; j < GRID_SIZE * REGION_SIZE; j++) {
g.setColor(Color.BLACK);
g.drawRect(j * CELL_SIZE, i * CELL_SIZE, CELL_SIZE, CELL_SIZE);
int value = grid[i][j];
if (value != 0) {
g.drawString(String.valueOf(value), j * CELL_SIZE + CELL_SIZE / 2, i * CELL_SIZE + CELL_SIZE / 2);
}
}
}
}
}
}
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.