diff --git a/src/Button.java b/src/Button.java index 32ad054..59a378c 100644 --- a/src/Button.java +++ b/src/Button.java @@ -7,7 +7,6 @@ import java.awt.*; * @author Moncef STITI * @author Marco ORFAO */ - public class Button extends JButton { /** * Constructor diff --git a/src/DialogManager.java b/src/DialogManager.java index 567a6d6..cc0c306 100644 --- a/src/DialogManager.java +++ b/src/DialogManager.java @@ -1,4 +1,3 @@ - /** * Interface containing definition to showDialog box. * @version 1.0 @@ -6,5 +5,8 @@ * @author Marco ORFAO */ public interface DialogManager { + /** + * Affiche une boîte de dialogue. + */ void showDialog(); } \ No newline at end of file diff --git a/src/GMCase.java b/src/GMCase.java index 159969a..d6f5801 100755 --- a/src/GMCase.java +++ b/src/GMCase.java @@ -26,13 +26,27 @@ public class GMCase extends JPanel { */ protected boolean isActive = false; + /** + * Ligne + */ private int row; + + /** + * Colonne + */ private int col; + + /** + * Grille + */ private GMGrid grille; /** - * Constructeur par défaut de GMCase. + * Constructeur de GMCase. * Initialise le bouton avec les propriétés nécessaires, crée un GMCaseListener et l'ajoute au bouton. + * @param grille La grille à laquelle la case appartient. + * @param row L'indice de ligne de la case. + * @param col L'indice de colonne de la case. */ public GMCase(GMGrid grille, int row, int col) { this.grille = grille; @@ -87,6 +101,10 @@ public class GMCase extends JPanel { return this.cellValue; } + /** + * Définit l'état d'activité de la case et met à jour son apparence en conséquence. + * @param active true si la case doit être activée, false sinon. + */ public void setActive(boolean active) { this.isActive = active; if (isActive) { diff --git a/src/GMCaseKeyListener.java b/src/GMCaseKeyListener.java index ffc5a57..32dd735 100644 --- a/src/GMCaseKeyListener.java +++ b/src/GMCaseKeyListener.java @@ -9,17 +9,37 @@ import javax.swing.JOptionPane; * @author Marco ORFAO */ public class GMCaseKeyListener implements KeyListener { - + /** + * Le vérificateur de grille pour vérifier si les règles du Sudoku sont respectées. + */ private GMChecker checker; + + /** + * La case GMCase à écouter. + */ private GMCase gridMakerCase; - private GMCase gridMakerCaseCopy; + + /** + * La grille GMGrid à laquelle la case appartient. + */ private GMGrid grille; + + /** + * L'indice de ligne de la case dans la grille. + */ private int row; + + /** + * L'indice de colonne de la case dans la grille. + */ private int col; /** * Constructeur de GridMakerCaseListener. * @param gridMakerCase La case à écouter. + * @param grille La grille à laquelle la case appartient. + * @param row L'indice de ligne de la case. + * @param col L'indice de colonne de la case. */ public GMCaseKeyListener(GMCase gridMakerCase,GMGrid grille, int row, int col) { this.gridMakerCase = gridMakerCase; diff --git a/src/GMCaseMouseListener.java b/src/GMCaseMouseListener.java index c3567f0..633e47e 100644 --- a/src/GMCaseMouseListener.java +++ b/src/GMCaseMouseListener.java @@ -1,12 +1,26 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.awt.*; import javax.swing.*; +/** + * GMCaseMouseListener est un écouteur de souris pour les cases de la grille + * @version 1.O + * @author Moncef STITI + * @author Marco ORFAO + */ public class GMCaseMouseListener extends MouseAdapter { - // Variable statique pour stocker la dernière case activée + /** + * Variable statique pour stocker la dernière case activée + */ private static GMCase lastActiveCase; + /** + * Constructeur par défaut de GMCaseMouseListener. + */ + public GMCaseMouseListener() { + // Ce constructeur est laissé vide intentionnellement + } + @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); diff --git a/src/GMGrid.java b/src/GMGrid.java index 5b60e53..7d54282 100755 --- a/src/GMGrid.java +++ b/src/GMGrid.java @@ -5,39 +5,49 @@ import java.awt.Color; import javax.swing.border.Border; /** - * A custom JPanel class representing a Sudoku grid. + * GMGrid hérite de JPanel et représente une grille de Sudoku. * @version 1.0 * @author Moncef STITI * @author Marco ORFAO */ public class GMGrid extends JPanel { - private int[][] gridValues = new int[9][9]; // Stores the values of each cell in the grid - private GMCase[][] gridCases = new GMCase[9][9]; // Represents the individual cells in the grid - private int[] exportedGrid = new int[9]; // Stores the grid values in an exportable format + /** + * Stocke les valeurs de chaque cellule dans la grille. + */ + private int[][] gridValues = new int[9][9]; /** - * Constructs a new GMGrid object and initializes the grid. + * Représente les cellules individuelles dans la grille. + */ + private GMCase[][] gridCases = new GMCase[9][9]; + + /** + * Stocke les valeurs de la grille dans un format exportable. + */ + private int[] exportedGrid = new int[9]; + + /** + * Construit un nouvel objet GMGrid et initialise la grille. */ public GMGrid() { setupGrid(); - setBackground(new Color(54, 91, 109)); // On change la couleur de fond (les cotés de la grille) + setBackground(new Color(54, 91, 109)); // Changer la couleur de fond (les côtés de la grille) } /** - * Sets up the layout of the Sudoku grid. + * Met en place la disposition de la grille Sudoku. */ private void setupGrid() { - // Add padding around the panel - setBorder(new EmptyBorder(15, 15, 15, 15)); // Adjust the values as needed for desired padding + // Ajouter du remplissage autour du panneau + setBorder(new EmptyBorder(15, 15, 15, 15)); // Ajuster les valeurs selon le remplissage désiré + setLayout(new GridLayout(3, 3)); // Définir la disposition pour le panneau principal de la grille - setLayout(new GridLayout(3, 3)); // Set layout for the main grid panel - - // Create 9 zones of 3x3 + // Créer 9 zones de 3x3 JPanel[][] zones = new JPanel[3][3]; setLayout(new GridLayout(3, 3)); - // Create individual zones and add them to the main grid panel + // Créer des zones individuelles et les ajouter au panneau principal de la grille for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { zones[i][j] = new JPanel(); @@ -46,14 +56,14 @@ public class GMGrid extends JPanel { } } - // Create and add cells to each zone + // Créer et ajouter des cellules à chaque zone for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { int zoneRow = i / 3; int zoneCol = j / 3; 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].setBorder(determineBorder(i, j)); // Utiliser la fonction pour déterminer les bordures gridCases[i][j].setBackground(Color.WHITE); } } @@ -71,12 +81,12 @@ public class GMGrid extends JPanel { int bottom = ((i + 1) % 3 == 0) ? 5 : 1; // Bordure inférieure plus épaisse pour chaque troisième ligne int left = (j == 0) ? 5 : 1; // Bordure gauche plus épaisse pour la première colonne int right = ((j + 1) % 3 == 0) ? 5 : 1; // Bordure droite plus épaisse pour chaque troisième colonne - return BorderFactory.createMatteBorder(top, left, bottom, right, Color.BLACK); // Crée et retourne la bordure + return BorderFactory.createMatteBorder(top, left, bottom, right, Color.BLACK); // Créer et retourner la bordure } /** - * Imports values to populate the Sudoku grid. - * @param values An array of integers representing the Sudoku grid values. + * Importe des valeurs pour peupler la grille Sudoku. + * @param values Un tableau d'entiers représentant les valeurs de la grille Sudoku. */ public void importGrid(int[] values) { for (int i = 0; i < 9; i++) { @@ -96,9 +106,8 @@ public class GMGrid extends JPanel { } /** - * Exports the current Sudoku grid values. - * - * @return An array of integers representing the current Sudoku grid values. + * Exporte les valeurs actuelles de la grille Sudoku. + * @return Un tableau d'entiers représentant les valeurs actuelles de la grille Sudoku. */ public int[] exportGrid() { for (int i = 0; i < 9; i++) { @@ -113,13 +122,12 @@ public class GMGrid extends JPanel { } /** - * Retrieves the value of a cell in the Sudoku grid. - * - * @param row The row index of the cell. - * @param column The column index of the cell. - * @return The value of the cell at the specified row and column indices. + * Récupère la valeur d'une cellule dans la grille Sudoku. + * @param row L'indice de ligne de la cellule. + * @param column L'indice de colonne de la cellule. + * @return La valeur de la cellule aux indices de ligne et de colonne spécifiés. */ public int getCellValueAt(int row, int column) { return gridCases[row][column].getCellValue(); } -} \ No newline at end of file +} diff --git a/src/GMHowToCreateController.java b/src/GMHowToCreateController.java index 174d452..595f282 100755 --- a/src/GMHowToCreateController.java +++ b/src/GMHowToCreateController.java @@ -8,6 +8,9 @@ import java.awt.event.*; * @author Marco ORFAO */ public class GMHowToCreateController implements ActionListener { + /** + * Le gestionnaire de dialogue pour la création de grille. + */ private GMHowToCreateDialogManager howToCreateGrid; /** diff --git a/src/GMHowToCreateDialogManager.java b/src/GMHowToCreateDialogManager.java index e9a4ffc..3b09481 100644 --- a/src/GMHowToCreateDialogManager.java +++ b/src/GMHowToCreateDialogManager.java @@ -10,6 +10,13 @@ import javax.swing.JOptionPane; */ public class GMHowToCreateDialogManager implements DialogManager { + /** + * Constructeur par défaut de GMHowToCreateDialogManager. + */ + public GMHowToCreateDialogManager() { + // Ce constructeur est laissé vide intentionnellement + } + /** * Méthode pour afficher la boîte de dialogue avec les instructions de création de grille. */ diff --git a/src/GMHowToCreateView.java b/src/GMHowToCreateView.java index f0c9b1f..89df626 100644 --- a/src/GMHowToCreateView.java +++ b/src/GMHowToCreateView.java @@ -9,19 +9,48 @@ import java.awt.*; * @author Marco ORFAO */ public class GMHowToCreateView extends JPanel { + /** + * La taille de la fenêtre de la boîte de dialogue. + */ private Dimension FRAME_SIZE = new Dimension(600, 500); + + /** + * La couleur de fond de la boîte de dialogue. + */ private Color BACKGROUND_COLOR = new Color(54, 91, 109); + /** + * Le titre affiché dans la boîte de dialogue. + */ private String TITLE = "Comment créer une grille"; + + /** + * La couleur du titre affiché dans la boîte de dialogue. + */ private Color TITLE_COLOR = new Color(255, 255, 255); + + /** + * La police du titre affiché dans la boîte de dialogue. + */ private Font TITLE_FONT = new Font("Copperplate", Font.BOLD, 40); + /** + * Le texte des instructions affiché dans la boîte de dialogue. + */ private String TEXT = "1. Cliquez sur le menu 'Fichier'.\n" + "2. Sélectionnez l'option 'Nouveau'.\n" + "3. Entrez les valeurs pour chaque cellule de la grille. (Entrez 0 si vous souhaitez supprimer une valeur de la grille)\n" + "4. Cliquez sur 'Sauvegarder' pour enregistrer votre grille.\n\n" + "Vous pouvez également charger une grille existante en sélectionnant 'Charger' depuis le menu 'Fichier'."; + + /** + * La couleur du texte des instructions affiché dans la boîte de dialogue. + */ private Color TEXT_COLOR = new Color(255, 255, 255); + + /** + * La police du texte des instructions affiché dans la boîte de dialogue. + */ private Font TEXT_FONT = new Font("Arial", Font.PLAIN, 20); /** diff --git a/src/GMImport.java b/src/GMImport.java index 2140cee..5ba1fad 100755 --- a/src/GMImport.java +++ b/src/GMImport.java @@ -12,10 +12,29 @@ import java.io.*; */ public class GMImport implements ActionListener { + /** + * La fenêtre précédente. + */ private JFrame previousFrame; + + /** + * La grille Sudoku. + */ private GMGrid grid; + + /** + * Indique si l'importation est accessible. + */ private boolean accessible; + + /** + * Le fichier à importer. + */ private File file; + + /** + * Les valeurs importées de la grille. + */ private int[] importedValues = new int[9]; /** diff --git a/src/GMResetGrid.java b/src/GMResetGrid.java index ea0cc03..40cce9d 100755 --- a/src/GMResetGrid.java +++ b/src/GMResetGrid.java @@ -3,14 +3,12 @@ import java.awt.event.ActionListener; /** * La classe GMResetGrid sert à crée une nouvelle grille de 0. - * * @version 1.0 * @author Moncef STITI * @author Marco ORFAO */ public class GMResetGrid implements ActionListener { - /** * La grille à réinitialiser. */ @@ -42,7 +40,6 @@ public class GMResetGrid implements ActionListener { for (int i = 0; i < 9 ; i++) { array[i] = 0; } - this.myGrid.importGrid(array); } } diff --git a/src/GMRules.java b/src/GMRules.java index 76b8f10..033ddee 100755 --- a/src/GMRules.java +++ b/src/GMRules.java @@ -8,7 +8,10 @@ import java.awt.event.*; * @author Marco ORFAO */ public class GMRules implements ActionListener { - private RulesDialogManager rulesDialog; // Gestionnaire de la boîte de dialogue des règles + /** + * Gestionnaire de la boîte de dialogue des règles + */ + private RulesDialogManager rulesDialog; /** * Constructeur de GMRules. diff --git a/src/GMSaver.java b/src/GMSaver.java index 152e8f2..c22d552 100755 --- a/src/GMSaver.java +++ b/src/GMSaver.java @@ -2,7 +2,6 @@ import java.io.*; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; - /** * Cette classe implémente un gestionnaire d'enregistrement de grille de jeu. * Elle permet à l'utilisateur de sauvegarder une grille de jeu dans un fichier spécifié. @@ -13,9 +12,24 @@ import javax.swing.filechooser.FileNameExtensionFilter; */ public class GMSaver { - private File selectedFile; // Le fichier sélectionné pour sauvegarde - private JFrame parentFrame; // La fenêtre parent - private GMGrid grid; // La grille de jeu à sauvegarder + /** + * Le fichier sélectionné pour sauvegarde + */ + private File selectedFile; + + /** + * La fenêtre parent + */ + private JFrame parentFrame; + + /** + * La grille de jeu à sauvegarder + */ + private GMGrid grid; + + /** + * Le testeur de grille + */ private GMChecker testGrille; /** @@ -29,7 +43,11 @@ public class GMSaver { this.testGrille = new GMChecker(this.grid); } - public void saveGridIfNeeded() { + /** + * Vérifie si la grille est valide, puis la sauvegarde si possible. + * Si la grille n'est pas valide, affiche un message d'erreur. + */ + public void saveGridIfPossible() { if (isValidGrid()) { saveGrid(); } else { diff --git a/src/GMSaverActionListener.java b/src/GMSaverActionListener.java index e072732..8b47a23 100644 --- a/src/GMSaverActionListener.java +++ b/src/GMSaverActionListener.java @@ -1,19 +1,42 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +/** + * GMSaverActionListener est un ActionListener utilisé pour écouter les événements de clic sur le bouton de sauvegarde. + * Lorsque l'événement se produit, il crée une instance de GMSaver et appelle la méthode saveGridIfNeeded(). + * @version 1.0 + * @author Moncef STITI + * @author Marco ORFAO + */ public class GMSaverActionListener implements ActionListener { - + /** + * Fenêtre parente + */ private Window parentFrame; + + /** + * Grille à sauvegarder + */ private GMGrid grid; + /** + * Constructeur de GMSaverActionListener. + * @param parentFrame La fenêtre parente. + * @param grid La grille à sauvegarder. + */ public GMSaverActionListener(Window parentFrame, GMGrid grid) { this.parentFrame = parentFrame; this.grid = grid; } + /** + * Méthode appelée lorsqu'un événement de clic se produit. + * Crée une instance de GMSaver et appelle la méthode saveGridIfNeeded(). + * @param e L'événement d'action. + */ @Override public void actionPerformed(ActionEvent e) { GMSaver gMSaver = new GMSaver(parentFrame, grid); - gMSaver.saveGridIfNeeded(); + gMSaver.saveGridIfPossible(); } } diff --git a/src/GMUserInterfaceController.java b/src/GMUserInterfaceController.java index 6cb5ac1..53f49d9 100644 --- a/src/GMUserInterfaceController.java +++ b/src/GMUserInterfaceController.java @@ -1,9 +1,19 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +/** + * Contrôleur de l'interface utilisateur pour le GridMaker. + */ public class GMUserInterfaceController implements ActionListener { + /** + * La fenêtre + */ private Window window; + /** + * Constructeur de GMUserInterfaceController + * @param window fenêtre parente + */ public GMUserInterfaceController(Window window) { this.window = window; } diff --git a/src/GMUserInterfaceView.java b/src/GMUserInterfaceView.java index ef8a188..eaf80c3 100755 --- a/src/GMUserInterfaceView.java +++ b/src/GMUserInterfaceView.java @@ -13,8 +13,19 @@ import java.awt.event.ActionListener; * @author Marco ORFAO */ public class GMUserInterfaceView { + /** + * Barre de menu de l'interface utilisateur. + */ private JMenuBar menuBar = new JMenuBar(); + + /** + * Contenu de la fenêtre de l'application. + */ private Container content; + + /** + * Grille du créateur de grille. + */ private GMGrid grid; /** diff --git a/src/GSCase.java b/src/GSCase.java index 97194d7..35df807 100755 --- a/src/GSCase.java +++ b/src/GSCase.java @@ -10,20 +10,70 @@ import java.awt.Font; * @author Marco ORFAO */ public class GSCase extends JPanel { - private int primaryValue; // Valeur principale de la case - private int secondaryValue = 0; // Deuxième valeur de la case (optionnelle) - private int tertiaryValue = 0; // Troisième valeur de la case (optionnelle) - private int quaternaryValue = 0; // Quatrième valeur de la case (optionnelle) + /** + * Valeur principale de la case. + */ + private int primaryValue; - private String text = ""; // Texte affiché dans la case - protected boolean isInitial = false; // Indique si la valeur de la case est initiale - protected boolean isActive = true; // Indique si la case est active - private JLabel label = new JLabel(); // Étiquette pour afficher le texte - private byte digitCount = 0; // Compteur du nombre de valeurs insérées dans la case - protected int positionX; // Position X de la case dans la grille - protected int positionY; // Position Y de la case dans la grille - protected GSGrid parentGrid; // Grille parente de la case - private GSCaseMouseListener mouseListener; // Écouteur pour les événements de souris + /** + * Deuxième valeur de la case (optionnelle). + */ + private int secondaryValue = 0; + + /** + * Troisième valeur de la case (optionnelle). + */ + private int tertiaryValue = 0; + + /** + * Quatrième valeur de la case (optionnelle). + */ + private int quaternaryValue = 0; + + /** + * Texte affiché dans la case. + */ + private String text = ""; + + /** + * Indique si la valeur de la case est initiale. + */ + protected boolean isInitial = false; + + /** + * Indique si la case est active. + */ + protected boolean isActive = true; + + /** + * Étiquette pour afficher le texte. + */ + private JLabel label = new JLabel(); + + /** + * Compteur du nombre de valeurs insérées dans la case. + */ + private byte digitCount = 0; + + /** + * Position X de la case dans la grille. + */ + protected int positionX; + + /** + * Position Y de la case dans la grille. + */ + protected int positionY; + + /** + * Grille parente de la case. + */ + protected GSGrid parentGrid; + + /** + * Écouteur pour les événements de souris. + */ + private GSCaseMouseListener mouseListener; /** * Constructeur de la classe GSCase. @@ -59,9 +109,7 @@ public class GSCase extends JPanel { public void initializeCell() { Font font = label.getFont(); label.setFont(font.deriveFont(font.getSize() + 15f)); - label.setText(this.text); - this.setBackground(this.isInitial ? Color.lightGray : Color.white); layoutSetup(); } @@ -130,7 +178,7 @@ public class GSCase extends JPanel { this.text = String.valueOf(this.primaryValue + " " + this.secondaryValue + " " + this.tertiaryValue + " " + this.quaternaryValue); } } - this.setBackground(Color.PINK); + this.setBackground(Color.CYAN); layoutSetup(); } else if (checkInputValue(value)){ this.setBackground(Color.RED); diff --git a/src/GSCaseMouseListener.java b/src/GSCaseMouseListener.java index 0e739c4..9da04f1 100644 --- a/src/GSCaseMouseListener.java +++ b/src/GSCaseMouseListener.java @@ -10,6 +10,9 @@ import java.awt.event.MouseListener; * @author Marco ORFAO */ public class GSCaseMouseListener implements MouseListener { + /* + * Case + */ private GSCase casePanel; /** @@ -29,7 +32,7 @@ public class GSCaseMouseListener implements MouseListener { if (!casePanel.isInitial) { casePanel.isActive = true; casePanel.setBackground(Color.GREEN); - casePanel.parentGrid.testActivity(casePanel.positionX, casePanel.positionY); + casePanel.parentGrid.disableAllExcept(casePanel.positionX, casePanel.positionY); } } diff --git a/src/GSGrid.java b/src/GSGrid.java index 2fc11bc..1ee0265 100755 --- a/src/GSGrid.java +++ b/src/GSGrid.java @@ -10,14 +10,39 @@ import javax.swing.border.Border; */ public class GSGrid extends JLabel { + /** + * Taille de la grille de Sudoku. + */ private static final int GRID_SIZE = 9; + /** + * Tableau représentant les données de la grille de Sudoku. + */ private int[][] tableauGrille = new int[GRID_SIZE][GRID_SIZE]; + + /** + * Tableau bidimensionnel de cases représentant la grille de Sudoku. + */ private GSCase[][] cases = new GSCase[GRID_SIZE][GRID_SIZE]; + + /** + * Menu associé à la grille de Sudoku. + */ private GSMenu menu; + /** + * Coordonnée X de la case active. + */ private int activeX = 0; + + /** + * Coordonnée Y de la case active. + */ private int activeY = 0; + + /** + * Indique si le jeu est en cours. + */ private Boolean isPlaying; /** @@ -29,7 +54,9 @@ public class GSGrid extends JLabel { initializeGrid(); } - // Initialise la grille avec des cases vides + /** + * Initialise la grille avec des cases vides + */ private void initializeGrid() { FlowLayout gestionnaire = new FlowLayout(); this.setLayout(gestionnaire); @@ -48,7 +75,12 @@ public class GSGrid extends JLabel { this.add(gridContainer); } - // Détermine les bordures des cellules de la grille + /** + * Détermine les bordures des cellules de la grille + * @param i L'indice de la ligne + * @param j L'indice de la colonne + * @return la bordure de la grille + */ private Border determineBorder(int i, int j) { int top = (i == 0) ? 5 : 1; int bottom = ((i + 1) % 3 == 0) ? 5 : 1; @@ -57,7 +89,11 @@ public class GSGrid extends JLabel { return BorderFactory.createMatteBorder(top, left, bottom, right, Color.BLACK); } - // Applique les bordures aux cellules de la grille + /** + * Applique les bordures aux cellules de la grille + * @param i L'indice de la ligne. + * @param j L'indice de la colonne. + */ private void setCellBorder(int i, int j) { cases[i][j].setBorder(determineBorder(i, j)); } @@ -103,8 +139,12 @@ public class GSGrid extends JLabel { return cases[i][j].getValue(); } - // Désactive les cases autres que celle indiquée - public void testActivity(int x, int y){ + /** + * Désactive les cases autres que celle indiquée + * @param x L'indice de ligne. + * @param y L'indice de la colonne. + */ + public void disableAllExcept(int x, int y){ for (int i = 0 ; i < GRID_SIZE ; i++ ) { for (int j = 0 ; j < GRID_SIZE ; j++ ) { if (cases[i][j].getActivity() && (i != x || j != y)) { @@ -116,24 +156,38 @@ public class GSGrid extends JLabel { } } - // Retourne l'index X de la case active + /** + * Retourne l'index X de la case active + * @return l'index X de la case active + */ public int whoIsActive_X() { return activeX; } - // Retourne l'index Y de la case active + /** + * Retourne l'index Y de la case active + * @return l'index Y de la case active + */ public int whoIsActive_Y() { return activeY; } - // Met à jour la valeur d'une case dans la grille + /** + * Met à jour la valeur d'une case dans la grille + * @param x L'indice de la ligne. + * @param y L'indice de la colonne. + * @param val La nouvelle valeur à assigner. + */ public void setValuetoCase(int x, int y, int val) { if (cases[x][y].getActivity() && getMode()) { cases[x][y].updateValue(val); } } - // Vérifie si la grille est complète + /** + * Vérifie si la grille est complète + * @return True si la grille est complète, false sinon. + */ public Boolean isComplete(){ for (int i = 0 ; i < 9 ; i++ ) { for (int j = 0 ; j < 9 ; j++ ) { @@ -145,17 +199,26 @@ public class GSGrid extends JLabel { return false; } - // Active ou désactive le mode de jeu - public void isPlaying(Boolean _bool) { - this.isPlaying = _bool; + /** + * Active ou désactive le mode de jeu + * @param isPlayingOrNot Un booléen indiquant si le mode de jeu est activé ou désactivé. + */ + public void isPlaying(Boolean isPlayingOrNot) { + this.isPlaying = isPlayingOrNot; } - // Retourne le mode de jeu + /** + * Retourne si le jeu est en cours ou non + * @return si le jeu est en cours ou non + */ public Boolean getMode() { return this.isPlaying; } - // Résout le Sudoku + /** + * Résout le Sudoku + * @return true si le Sudoku est résolu avec succès, sinon false. + */ public boolean solve() { for (int row = 0; row < 9; row++) { for (int column = 0; column < 9; column++) { diff --git a/src/GSImport.java b/src/GSImport.java index 866a97d..a7069e9 100755 --- a/src/GSImport.java +++ b/src/GSImport.java @@ -33,7 +33,6 @@ public class GSImport { /** * Constructeur pour créer une instance de GridMakerImport. * @param frame La fenêtre précédente - * @param sudokuGrid La grille Sudoku */ public GSImport(Window frame) { this.previousFrame = frame; diff --git a/src/GSPlay.java b/src/GSPlay.java index f3d659a..ce39ddf 100755 --- a/src/GSPlay.java +++ b/src/GSPlay.java @@ -69,7 +69,7 @@ public class GSPlay { /** * Constructeur de la classe GSPlay. * @param grille La grille de Sudoku. - * @param frame La fenêtre principale. + * @param window La fenêtre principale. */ public GSPlay(Window window, GSGrid grille) { this.ma_Grille = grille; diff --git a/src/GridMaker.java b/src/GridMaker.java index 2c91938..0800331 100644 --- a/src/GridMaker.java +++ b/src/GridMaker.java @@ -1,7 +1,24 @@ -public class GridMaker{ +/** + * Classe principale pour le GridMaker. + * @version 1.0 + * @author Moncef STITI + * @author Marco ORFAO + */ +public class GridMaker { + /** + * Constructeur par défaut de la classe GridMaker. + */ + public GridMaker() { + // Ce constructeur est laissé vide intentionnellement + } + + /** + * Méthode principale pour démarrer le GridMaker. + * @param args Les arguments de la ligne de commande (non utilisés dans cette application). + */ public static void main(String[] args) { Window fenetre = new Window(); // Création d'une fenêtre String[] gmButtonTexts = {"Générer une grille", "Règles", "Quitter"}; // Texte des boutons pour le menu du GridMaker HomeView gmHomeView = new HomeView(fenetre, "Sudoku Grid Creator", "Par Moncef & Marco", gmButtonTexts); } -} \ No newline at end of file +} diff --git a/src/GridSolver.java b/src/GridSolver.java index 14ddff5..fa50eae 100644 --- a/src/GridSolver.java +++ b/src/GridSolver.java @@ -1,7 +1,25 @@ -public class GridSolver{ +/** + * Classe principale pour le GridSolver. + * @version 1.0 + * @author Moncef STITI + * @author Marco ORFAO + */ +public class GridSolver { + /** + * Constructeur par défaut de la classe GridSolver. + */ + public GridSolver() { + // Ce constructeur est laissé vide intentionnellement + } + + + /** + * Méthode principale pour démarrer le GridSolver. + * @param args Les arguments de la ligne de commande (non utilisés dans cette application). + */ public static void main(String[] args) { Window fenetre = new Window(); // Création d'une fenêtre String[] gsButtonTexts = {"Jouer", "Règles", "Quitter"}; // Texte des boutons pour le menu du GridSolver HomeView gsHomeView = new HomeView(fenetre, "Sudoku Game", "Par Moncef & Marco", gsButtonTexts); } -} \ No newline at end of file +} diff --git a/src/HomeView.java b/src/HomeView.java index ba831bd..62182c7 100644 --- a/src/HomeView.java +++ b/src/HomeView.java @@ -14,30 +14,94 @@ import java.util.List; */ public class HomeView extends JPanel { - // Constantes pour les chemins des icônes et des fichiers audio, ainsi que pour les dimensions et les couleurs + /** + * La chemin pour accéder à l'image "iconeAudio.png" + */ private final String AUDIO_ON = "img/iconeAudio.png"; + + /** + * La chemin pour accéder à l'image "AudioMuted.png" + */ private final String AUDIO_OFF = "img/iconeAudioMuted.png"; + + /** + * Le chemin pour accéder à la musique + */ private final String MUSIC_FILE = "audio/musiqueDeFond.wav"; + + /** + * La taille des boutons + */ private final Dimension BUTTON_SIZE = new Dimension(300, 60); + + /** + * La couleur d'arrière plan + */ private final Color BACKGROUND_COLOR = new Color(54, 91, 109); + + /** + * La couleur du texte du titre + */ private final Color TITLE_TEXT_COLOR = Color.WHITE; + + /** + * La police d'écriture du texte du titre + */ private final Font TITLE_FONT = new Font("Copperplate", Font.BOLD, 75); + + /** + * La police d'écriture du sous-titre + */ private final Font SUBTITLE_FONT = new Font("Copperplate", Font.PLAIN, 24); + + /** + * La police d'écriture du texte des boutons + */ private final Font BUTTON_FONT = new Font("Copperplate", Font.BOLD, 24); - private final String[] BUTTON_TEXTS; // Textes des boutons - private final Title[] labels; // Tableau de titres pour le titre principal et le sous-titre - private MusicButton musicButton; // Bouton pour contrôler la musique - private final Window window; // Fenêtre parente - private JPanel titlePanel; // Panneau pour le titre - private JPanel buttonPanel; // Panneau pour les boutons - private JLabel imageLabel; // Étiquette pour l'image - private List