Finalisation de la documentation Java

This commit is contained in:
Moncef STITI 2024-05-02 18:36:37 +02:00
parent a430913fa5
commit 7deb20f794
25 changed files with 492 additions and 92 deletions

View File

@ -7,7 +7,6 @@ import java.awt.*;
* @author Moncef STITI
* @author Marco ORFAO
*/
public class Button extends JButton {
/**
* Constructor

View File

@ -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();
}

View File

@ -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) {

View File

@ -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;

View File

@ -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);

View File

@ -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 finir les bordures
gridCases[i][j].setBorder(determineBorder(i, j)); // Utiliser la fonction pour 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();
}
}
}

View File

@ -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;
/**

View File

@ -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.
*/

View File

@ -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);
/**

View File

@ -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];
/**

View File

@ -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);
}
}

View File

@ -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.

View File

@ -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 {

View File

@ -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();
}
}

View File

@ -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;
}

View File

@ -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;
/**

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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++) {

View File

@ -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;

View File

@ -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;

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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<Button> buttonsList; // Liste des boutons créés
/**
* Textes des boutons
*/
private final String[] BUTTON_TEXTS;
/**
* Tableau de titres pour le titre principal et le sous-titre
*/
private final Title[] labels;
/**
* Bouton pour contrôler la musique
*/
private MusicButton musicButton;
/**
* Fenêtre parente
*/
private final Window window;
/**
* Panneau pour le titre
*/
private JPanel titlePanel;
/**
* Panneau pour les boutons
*/
private JPanel buttonPanel;
/**
* Étiquette pour l'image
*/
private JLabel imageLabel;
/**
* Liste des boutons créés
*/
private List<Button> buttonsList;
/**
* Constructeur de la classe HomeView.
* Initialise la fenêtre parente et crée les composants de la page d'accueil.
*
* @param window La fenêtre parente.
* @param mainTitle Le titre principal de la page.
* @param subTitle Le sous-titre de la page.

View File

@ -8,6 +8,13 @@ import javax.swing.JOptionPane;
* @author Marco ORFAO
*/
public class RulesDialogManager implements DialogManager {
/**
* Constructeur par défaut de RulesDialogManager.
*/
public RulesDialogManager() {
// Ce constructeur est laissé vide intentionnellement
}
/**
* Affiche la boîte de dialogue des règles du Sudoku.
*/