From 8bc9e97d1f715fe32272c7abf156f02e83093133 Mon Sep 17 00:00:00 2001 From: keraudre Date: Sat, 4 May 2024 17:21:22 +0200 Subject: [PATCH] =?UTF-8?q?mise=20=C3=A0=20jour=20d=C3=A9pendance=20et=20n?= =?UTF-8?q?om=20des=20programmes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Concepteur.java | 15 +++++++ Joueur.java | 15 +++++++ Makefile | 24 ++++++----- SudokuGridConcepteur.java | 83 +++++++++++++++++++++++++++++++++++++++ SudokuGridJoueur.java | 83 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 211 insertions(+), 9 deletions(-) create mode 100644 Concepteur.java create mode 100644 Joueur.java create mode 100644 SudokuGridConcepteur.java create mode 100644 SudokuGridJoueur.java diff --git a/Concepteur.java b/Concepteur.java new file mode 100644 index 0000000..1b56c09 --- /dev/null +++ b/Concepteur.java @@ -0,0 +1,15 @@ +import javax.swing.*; + +public class Main { + + public static void main(String[] args) { + + // affichage et création de la fenetre + + SudokuGridConcepteur sudokuGrid = new SudokuGridConcepteur(); + sudokuGrid.setSize(700,600); + sudokuGrid.setLocation(100, 100); + sudokuGrid.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + sudokuGrid.setVisible(true); + } +} diff --git a/Joueur.java b/Joueur.java new file mode 100644 index 0000000..0ba0133 --- /dev/null +++ b/Joueur.java @@ -0,0 +1,15 @@ +import javax.swing.*; + +public class Main { + + public static void main(String[] args) { + + // affichage et création de la fenetre + + SudokuGridJoueur sudokuGrid = new SudokuGridJoueur(); + sudokuGrid.setSize(700,600); + sudokuGrid.setLocation(100, 100); + sudokuGrid.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + sudokuGrid.setVisible(true); + } +} diff --git a/Makefile b/Makefile index cc41866..860f20a 100644 --- a/Makefile +++ b/Makefile @@ -7,11 +7,17 @@ J = java ### REGLES ESSENTIELLES ### -Main.class : Main.java SudokuGrid.class - ${JC} ${JCFLAGS} Main.java +Concepteur.class : Concepteur.java SudokuGridConcepteur.class + ${JC} ${JCFLAGS} Concepteur.java -SudokuGrid.class : SudokuGrid.java TextFilter.class SaveButton.class LoadButton.class VerifButton.class - ${JC} ${JCFLAGS} SudokuGrid.java +Joueur.class : Joueur.java SudokuGridJoueur.class + ${JC} ${JCFLAGS} Joueur.java + +SudokuGridConcepteur.class : SudokuGridConcepteur.java TextFilter.class SaveButton.class LoadButton.class VerifButton.class + ${JC} ${JCFLAGS} SudokuGridConcepteur.java + +SudokuGridJoueur.class : SudokuGridJoueur.java TextFilter.class LoadButton.class SaveButton.class + ${JC} ${JCFLAGS} SudokuGridJoueru.java TextFilter.class : TextFilter.java ${JC} ${JCFLAGS} TextFilter.java @@ -22,14 +28,14 @@ SaveButton.class : SaveButton.java LoadButton.class : LoadButton.java ${JC} ${JCFLAGS} LoadButton.java -VerifButton.class : VerifButton.java - ${JC} ${JCFLAGS} VerifButton.java - ### REGLES OPTIONNELLES ### -run : Main.class - ${J} Main +Concepteur : Concepteur.class + ${J} Concepteur + +Joueur : Joueur.class + ${J} Joueur clean : -rm -f *.class *.java~ *~ diff --git a/SudokuGridConcepteur.java b/SudokuGridConcepteur.java new file mode 100644 index 0000000..e61396e --- /dev/null +++ b/SudokuGridConcepteur.java @@ -0,0 +1,83 @@ +import javax.swing.*; +import java.awt.*; + +public class SudokuGrid extends JFrame { + private static final int GRID_SIZE = 9; // Taille de la grille Sudoku 9x9 + private static final int REGION_SIZE = 3; + public static final boolean BOOL = true; + private JTextField[][] grid; + + public SudokuGrid() { + // Panneau pour la grille Sudoku. + JPanel gridPanel = new JPanel(); + gridPanel.setLayout(new GridLayout(GRID_SIZE, GRID_SIZE)); // Utiliser GridLayout + gridPanel.setBackground(new Color(88, 169, 191)); // Fond vert + + // Initialiser la grille + grid = new JTextField[GRID_SIZE][GRID_SIZE]; + for (int i = 0; i < GRID_SIZE; i++) { + for (int j = 0; j < GRID_SIZE; j++) { + grid[i][j] = new JTextField(); + + TextFilter filtre = new TextFilter(grid[i][j], GRID_SIZE, grid, i, j); + + grid[i][j].addKeyListener(filtre); + grid[i][j].setHorizontalAlignment(JTextField.CENTER); + grid[i][j].setFont(new Font("Verdana", Font.BOLD,40)); + gridPanel.add(grid[i][j]); + + int top = 1; + int left = 1; + int bottom = 1; + int right = 1; + + // Vérifier si la case est sur le bord de la région horizontalement + if ((j + 1) % REGION_SIZE == 0 && j != GRID_SIZE - 1) { + right = 5; // Ajouter une bordure plus épaisse à droite + } + + // Vérifier si la case est sur le bord de la région verticalement + if ((i + 1) % REGION_SIZE == 0 && i != GRID_SIZE - 1) { + bottom = 5; // Ajouter une bordure plus épaisse en bas + } + + // Appliquer la bordure à la case + grid[i][j].setBorder(BorderFactory.createMatteBorder(top, left, bottom, right, Color.BLACK)); + } + } + + // Panneau pour les boutons + JPanel bouton = new JPanel(); + bouton.setBackground(new Color(88, 169, 191)); + bouton.setPreferredSize(new Dimension(150, 0)); // Espace pour les boutons + + // Bouton pour sauvegarder la grille + JButton save = new JButton("Sauvegarder"); + + SaveButton saver = new SaveButton(GRID_SIZE,grid); + + save.addActionListener(saver); + + + // Bouton pour chargé la grille + JButton load = new JButton("Charger"); + + LoadButton loader = new LoadButton(GRID_SIZE, grid); + + load.addActionListener(loader); + + + + + bouton.add(load); + bouton.add(save); + + + // Ajout des panneaux à la fenetre + getContentPane().add(gridPanel, BorderLayout.CENTER); + getContentPane().add(bouton, BorderLayout.EAST); + } + + + +} diff --git a/SudokuGridJoueur.java b/SudokuGridJoueur.java new file mode 100644 index 0000000..10c5770 --- /dev/null +++ b/SudokuGridJoueur.java @@ -0,0 +1,83 @@ +import javax.swing.*; +import java.awt.*; + +public class SudokuGridTesteur extends JFrame { + private static final int GRID_SIZE = 9; // Taille de la grille Sudoku 9x9 + private static final int REGION_SIZE = 3; + public static final boolean BOOL = false; + private JTextField[][] grid; + + public SudokuGridTesteur() { + // Panneau pour la grille Sudoku. + JPanel gridPanel = new JPanel(); + gridPanel.setLayout(new GridLayout(GRID_SIZE, GRID_SIZE)); // Utiliser GridLayout + gridPanel.setBackground(new Color(88, 169, 191)); // Fond vert + + // Initialiser la grille + grid = new JTextField[GRID_SIZE][GRID_SIZE]; + for (int i = 0; i < GRID_SIZE; i++) { + for (int j = 0; j < GRID_SIZE; j++) { + grid[i][j] = new JTextField(); + + TextFilter filtre = new TextFilter(grid[i][j], GRID_SIZE, grid, i, j); + + grid[i][j].addKeyListener(filtre); + grid[i][j].setHorizontalAlignment(JTextField.CENTER); + grid[i][j].setFont(new Font("Verdana", Font.BOLD,40)); + gridPanel.add(grid[i][j]); + + int top = 1; + int left = 1; + int bottom = 1; + int right = 1; + + // Vérifier si la case est sur le bord de la région horizontalement + if ((j + 1) % REGION_SIZE == 0 && j != GRID_SIZE - 1) { + right = 5; // Ajouter une bordure plus épaisse à droite + } + + // Vérifier si la case est sur le bord de la région verticalement + if ((i + 1) % REGION_SIZE == 0 && i != GRID_SIZE - 1) { + bottom = 5; // Ajouter une bordure plus épaisse en bas + } + + // Appliquer la bordure à la case + grid[i][j].setBorder(BorderFactory.createMatteBorder(top, left, bottom, right, Color.BLACK)); + } + } + + // Panneau pour les boutons + JPanel bouton = new JPanel(); + bouton.setBackground(new Color(88, 169, 191)); + bouton.setPreferredSize(new Dimension(150, 0)); // Espace pour les boutons + + // Bouton pour sauvegarder la grille + JButton save = new JButton("Sauvegarder"); + + SaveButton saver = new SaveButton(GRID_SIZE,grid); + + save.addActionListener(saver); + + + // Bouton pour chargé la grille + JButton load = new JButton("Charger"); + + LoadButton loader = new LoadButton(GRID_SIZE, grid); + + load.addActionListener(loader); + + + + + bouton.add(load); + bouton.add(save); + + + // Ajout des panneaux à la fenetre + getContentPane().add(gridPanel, BorderLayout.CENTER); + getContentPane().add(bouton, BorderLayout.EAST); + } + + + +}