Finalisation de la documentation Java
This commit is contained in:
parent
a430913fa5
commit
7deb20f794
@ -7,7 +7,6 @@ import java.awt.*;
|
|||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class Button extends JButton {
|
public class Button extends JButton {
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface containing definition to showDialog box.
|
* Interface containing definition to showDialog box.
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
@ -6,5 +5,8 @@
|
|||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public interface DialogManager {
|
public interface DialogManager {
|
||||||
|
/**
|
||||||
|
* Affiche une boîte de dialogue.
|
||||||
|
*/
|
||||||
void showDialog();
|
void showDialog();
|
||||||
}
|
}
|
@ -26,13 +26,27 @@ public class GMCase extends JPanel {
|
|||||||
*/
|
*/
|
||||||
protected boolean isActive = false;
|
protected boolean isActive = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ligne
|
||||||
|
*/
|
||||||
private int row;
|
private int row;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colonne
|
||||||
|
*/
|
||||||
private int col;
|
private int col;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Grille
|
||||||
|
*/
|
||||||
private GMGrid 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.
|
* 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) {
|
public GMCase(GMGrid grille, int row, int col) {
|
||||||
this.grille = grille;
|
this.grille = grille;
|
||||||
@ -87,6 +101,10 @@ public class GMCase extends JPanel {
|
|||||||
return this.cellValue;
|
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) {
|
public void setActive(boolean active) {
|
||||||
this.isActive = active;
|
this.isActive = active;
|
||||||
if (isActive) {
|
if (isActive) {
|
||||||
|
@ -9,17 +9,37 @@ import javax.swing.JOptionPane;
|
|||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GMCaseKeyListener implements KeyListener {
|
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;
|
private GMChecker checker;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* La case GMCase à écouter.
|
||||||
|
*/
|
||||||
private GMCase gridMakerCase;
|
private GMCase gridMakerCase;
|
||||||
private GMCase gridMakerCaseCopy;
|
|
||||||
|
/**
|
||||||
|
* La grille GMGrid à laquelle la case appartient.
|
||||||
|
*/
|
||||||
private GMGrid grille;
|
private GMGrid grille;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* L'indice de ligne de la case dans la grille.
|
||||||
|
*/
|
||||||
private int row;
|
private int row;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* L'indice de colonne de la case dans la grille.
|
||||||
|
*/
|
||||||
private int col;
|
private int col;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur de GridMakerCaseListener.
|
* Constructeur de GridMakerCaseListener.
|
||||||
* @param gridMakerCase La case à écouter.
|
* @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) {
|
public GMCaseKeyListener(GMCase gridMakerCase,GMGrid grille, int row, int col) {
|
||||||
this.gridMakerCase = gridMakerCase;
|
this.gridMakerCase = gridMakerCase;
|
||||||
|
@ -1,12 +1,26 @@
|
|||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.*;
|
|
||||||
import javax.swing.*;
|
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 {
|
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;
|
private static GMCase lastActiveCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur par défaut de GMCaseMouseListener.
|
||||||
|
*/
|
||||||
|
public GMCaseMouseListener() {
|
||||||
|
// Ce constructeur est laissé vide intentionnellement
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseClicked(MouseEvent e) {
|
public void mouseClicked(MouseEvent e) {
|
||||||
super.mouseClicked(e);
|
super.mouseClicked(e);
|
||||||
|
@ -5,39 +5,49 @@ import java.awt.Color;
|
|||||||
import javax.swing.border.Border;
|
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
|
* @version 1.0
|
||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GMGrid extends JPanel {
|
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
|
* Stocke les valeurs de chaque cellule dans la grille.
|
||||||
private int[] exportedGrid = new int[9]; // Stores the grid values in an exportable format
|
*/
|
||||||
|
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() {
|
public GMGrid() {
|
||||||
setupGrid();
|
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() {
|
private void setupGrid() {
|
||||||
// Add padding around the panel
|
// Ajouter du remplissage autour du panneau
|
||||||
setBorder(new EmptyBorder(15, 15, 15, 15)); // Adjust the values as needed for desired padding
|
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
|
// Créer 9 zones de 3x3
|
||||||
|
|
||||||
// Create 9 zones of 3x3
|
|
||||||
JPanel[][] zones = new JPanel[3][3];
|
JPanel[][] zones = new JPanel[3][3];
|
||||||
setLayout(new GridLayout(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 i = 0; i < 3; i++) {
|
||||||
for (int j = 0; j < 3; j++) {
|
for (int j = 0; j < 3; j++) {
|
||||||
zones[i][j] = new JPanel();
|
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 i = 0; i < 9; i++) {
|
||||||
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(this,i,j);
|
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)); // Utiliser la fonction pour déterminer les bordures
|
||||||
gridCases[i][j].setBackground(Color.WHITE);
|
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 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 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
|
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.
|
* Importe des valeurs pour peupler la grille Sudoku.
|
||||||
* @param values An array of integers representing the Sudoku grid values.
|
* @param values Un tableau d'entiers représentant les valeurs de la grille Sudoku.
|
||||||
*/
|
*/
|
||||||
public void importGrid(int[] values) {
|
public void importGrid(int[] values) {
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
@ -96,9 +106,8 @@ public class GMGrid extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Exports 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.
|
||||||
* @return An array of integers representing the current Sudoku grid values.
|
|
||||||
*/
|
*/
|
||||||
public int[] exportGrid() {
|
public int[] exportGrid() {
|
||||||
for (int i = 0; i < 9; i++) {
|
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.
|
* Récupère la valeur d'une cellule dans la grille Sudoku.
|
||||||
*
|
* @param row L'indice de ligne de la cellule.
|
||||||
* @param row The row index of the cell.
|
* @param column L'indice de colonne de la cellule.
|
||||||
* @param column The column index of the cell.
|
* @return La valeur de la cellule aux indices de ligne et de colonne spécifiés.
|
||||||
* @return The value of the cell at the specified row and column indices.
|
|
||||||
*/
|
*/
|
||||||
public int getCellValueAt(int row, int column) {
|
public int getCellValueAt(int row, int column) {
|
||||||
return gridCases[row][column].getCellValue();
|
return gridCases[row][column].getCellValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,9 @@ import java.awt.event.*;
|
|||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GMHowToCreateController implements ActionListener {
|
public class GMHowToCreateController implements ActionListener {
|
||||||
|
/**
|
||||||
|
* Le gestionnaire de dialogue pour la création de grille.
|
||||||
|
*/
|
||||||
private GMHowToCreateDialogManager howToCreateGrid;
|
private GMHowToCreateDialogManager howToCreateGrid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -10,6 +10,13 @@ import javax.swing.JOptionPane;
|
|||||||
*/
|
*/
|
||||||
public class GMHowToCreateDialogManager implements DialogManager {
|
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.
|
* Méthode pour afficher la boîte de dialogue avec les instructions de création de grille.
|
||||||
*/
|
*/
|
||||||
|
@ -9,19 +9,48 @@ import java.awt.*;
|
|||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GMHowToCreateView extends JPanel {
|
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);
|
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);
|
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";
|
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);
|
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);
|
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" +
|
private String TEXT = "1. Cliquez sur le menu 'Fichier'.\n" +
|
||||||
"2. Sélectionnez l'option 'Nouveau'.\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" +
|
"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" +
|
"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'.";
|
"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);
|
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);
|
private Font TEXT_FONT = new Font("Arial", Font.PLAIN, 20);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,10 +12,29 @@ import java.io.*;
|
|||||||
*/
|
*/
|
||||||
public class GMImport implements ActionListener {
|
public class GMImport implements ActionListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* La fenêtre précédente.
|
||||||
|
*/
|
||||||
private JFrame previousFrame;
|
private JFrame previousFrame;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* La grille Sudoku.
|
||||||
|
*/
|
||||||
private GMGrid grid;
|
private GMGrid grid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indique si l'importation est accessible.
|
||||||
|
*/
|
||||||
private boolean accessible;
|
private boolean accessible;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Le fichier à importer.
|
||||||
|
*/
|
||||||
private File file;
|
private File file;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Les valeurs importées de la grille.
|
||||||
|
*/
|
||||||
private int[] importedValues = new int[9];
|
private int[] importedValues = new int[9];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,14 +3,12 @@ import java.awt.event.ActionListener;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* La classe GMResetGrid sert à crée une nouvelle grille de 0.
|
* La classe GMResetGrid sert à crée une nouvelle grille de 0.
|
||||||
*
|
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class GMResetGrid implements ActionListener {
|
public class GMResetGrid implements ActionListener {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La grille à réinitialiser.
|
* La grille à réinitialiser.
|
||||||
*/
|
*/
|
||||||
@ -42,7 +40,6 @@ public class GMResetGrid implements ActionListener {
|
|||||||
for (int i = 0; i < 9 ; i++) {
|
for (int i = 0; i < 9 ; i++) {
|
||||||
array[i] = 0;
|
array[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.myGrid.importGrid(array);
|
this.myGrid.importGrid(array);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,10 @@ import java.awt.event.*;
|
|||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GMRules implements ActionListener {
|
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.
|
* Constructeur de GMRules.
|
||||||
|
@ -2,7 +2,6 @@ import java.io.*;
|
|||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.filechooser.FileNameExtensionFilter;
|
import javax.swing.filechooser.FileNameExtensionFilter;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cette classe implémente un gestionnaire d'enregistrement de grille de jeu.
|
* 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é.
|
* 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 {
|
public class GMSaver {
|
||||||
|
|
||||||
private File selectedFile; // Le fichier sélectionné pour sauvegarde
|
/**
|
||||||
private JFrame parentFrame; // La fenêtre parent
|
* Le fichier sélectionné pour sauvegarde
|
||||||
private GMGrid grid; // La grille de jeu à sauvegarder
|
*/
|
||||||
|
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;
|
private GMChecker testGrille;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,7 +43,11 @@ public class GMSaver {
|
|||||||
this.testGrille = new GMChecker(this.grid);
|
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()) {
|
if (isValidGrid()) {
|
||||||
saveGrid();
|
saveGrid();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,19 +1,42 @@
|
|||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
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 {
|
public class GMSaverActionListener implements ActionListener {
|
||||||
|
/**
|
||||||
|
* Fenêtre parente
|
||||||
|
*/
|
||||||
private Window parentFrame;
|
private Window parentFrame;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Grille à sauvegarder
|
||||||
|
*/
|
||||||
private GMGrid grid;
|
private GMGrid grid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur de GMSaverActionListener.
|
||||||
|
* @param parentFrame La fenêtre parente.
|
||||||
|
* @param grid La grille à sauvegarder.
|
||||||
|
*/
|
||||||
public GMSaverActionListener(Window parentFrame, GMGrid grid) {
|
public GMSaverActionListener(Window parentFrame, GMGrid grid) {
|
||||||
this.parentFrame = parentFrame;
|
this.parentFrame = parentFrame;
|
||||||
this.grid = grid;
|
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
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
GMSaver gMSaver = new GMSaver(parentFrame, grid);
|
GMSaver gMSaver = new GMSaver(parentFrame, grid);
|
||||||
gMSaver.saveGridIfNeeded();
|
gMSaver.saveGridIfPossible();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,19 @@
|
|||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contrôleur de l'interface utilisateur pour le GridMaker.
|
||||||
|
*/
|
||||||
public class GMUserInterfaceController implements ActionListener {
|
public class GMUserInterfaceController implements ActionListener {
|
||||||
|
/**
|
||||||
|
* La fenêtre
|
||||||
|
*/
|
||||||
private Window window;
|
private Window window;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur de GMUserInterfaceController
|
||||||
|
* @param window fenêtre parente
|
||||||
|
*/
|
||||||
public GMUserInterfaceController(Window window) {
|
public GMUserInterfaceController(Window window) {
|
||||||
this.window = window;
|
this.window = window;
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,19 @@ import java.awt.event.ActionListener;
|
|||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GMUserInterfaceView {
|
public class GMUserInterfaceView {
|
||||||
|
/**
|
||||||
|
* Barre de menu de l'interface utilisateur.
|
||||||
|
*/
|
||||||
private JMenuBar menuBar = new JMenuBar();
|
private JMenuBar menuBar = new JMenuBar();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contenu de la fenêtre de l'application.
|
||||||
|
*/
|
||||||
private Container content;
|
private Container content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Grille du créateur de grille.
|
||||||
|
*/
|
||||||
private GMGrid grid;
|
private GMGrid grid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -10,20 +10,70 @@ import java.awt.Font;
|
|||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GSCase extends JPanel {
|
public class GSCase extends JPanel {
|
||||||
private int primaryValue; // Valeur principale de la case
|
/**
|
||||||
private int secondaryValue = 0; // Deuxième valeur de la case (optionnelle)
|
* Valeur principale de la case.
|
||||||
private int tertiaryValue = 0; // Troisième valeur de la case (optionnelle)
|
*/
|
||||||
private int quaternaryValue = 0; // Quatrième valeur de la case (optionnelle)
|
private int primaryValue;
|
||||||
|
|
||||||
private String text = ""; // Texte affiché dans la case
|
/**
|
||||||
protected boolean isInitial = false; // Indique si la valeur de la case est initiale
|
* Deuxième valeur de la case (optionnelle).
|
||||||
protected boolean isActive = true; // Indique si la case est active
|
*/
|
||||||
private JLabel label = new JLabel(); // Étiquette pour afficher le texte
|
private int secondaryValue = 0;
|
||||||
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
|
* Troisième valeur de la case (optionnelle).
|
||||||
protected GSGrid parentGrid; // Grille parente de la case
|
*/
|
||||||
private GSCaseMouseListener mouseListener; // Écouteur pour les événements de souris
|
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.
|
* Constructeur de la classe GSCase.
|
||||||
@ -59,9 +109,7 @@ public class GSCase extends JPanel {
|
|||||||
public void initializeCell() {
|
public void initializeCell() {
|
||||||
Font font = label.getFont();
|
Font font = label.getFont();
|
||||||
label.setFont(font.deriveFont(font.getSize() + 15f));
|
label.setFont(font.deriveFont(font.getSize() + 15f));
|
||||||
|
|
||||||
label.setText(this.text);
|
label.setText(this.text);
|
||||||
this.setBackground(this.isInitial ? Color.lightGray : Color.white);
|
|
||||||
layoutSetup();
|
layoutSetup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,7 +178,7 @@ public class GSCase extends JPanel {
|
|||||||
this.text = String.valueOf(this.primaryValue + " " + this.secondaryValue + " " + this.tertiaryValue + " " + this.quaternaryValue);
|
this.text = String.valueOf(this.primaryValue + " " + this.secondaryValue + " " + this.tertiaryValue + " " + this.quaternaryValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.setBackground(Color.PINK);
|
this.setBackground(Color.CYAN);
|
||||||
layoutSetup();
|
layoutSetup();
|
||||||
} else if (checkInputValue(value)){
|
} else if (checkInputValue(value)){
|
||||||
this.setBackground(Color.RED);
|
this.setBackground(Color.RED);
|
||||||
|
@ -10,6 +10,9 @@ import java.awt.event.MouseListener;
|
|||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GSCaseMouseListener implements MouseListener {
|
public class GSCaseMouseListener implements MouseListener {
|
||||||
|
/*
|
||||||
|
* Case
|
||||||
|
*/
|
||||||
private GSCase casePanel;
|
private GSCase casePanel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,7 +32,7 @@ public class GSCaseMouseListener implements MouseListener {
|
|||||||
if (!casePanel.isInitial) {
|
if (!casePanel.isInitial) {
|
||||||
casePanel.isActive = true;
|
casePanel.isActive = true;
|
||||||
casePanel.setBackground(Color.GREEN);
|
casePanel.setBackground(Color.GREEN);
|
||||||
casePanel.parentGrid.testActivity(casePanel.positionX, casePanel.positionY);
|
casePanel.parentGrid.disableAllExcept(casePanel.positionX, casePanel.positionY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,14 +10,39 @@ import javax.swing.border.Border;
|
|||||||
*/
|
*/
|
||||||
public class GSGrid extends JLabel {
|
public class GSGrid extends JLabel {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Taille de la grille de Sudoku.
|
||||||
|
*/
|
||||||
private static final int GRID_SIZE = 9;
|
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];
|
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];
|
private GSCase[][] cases = new GSCase[GRID_SIZE][GRID_SIZE];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Menu associé à la grille de Sudoku.
|
||||||
|
*/
|
||||||
private GSMenu menu;
|
private GSMenu menu;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Coordonnée X de la case active.
|
||||||
|
*/
|
||||||
private int activeX = 0;
|
private int activeX = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Coordonnée Y de la case active.
|
||||||
|
*/
|
||||||
private int activeY = 0;
|
private int activeY = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indique si le jeu est en cours.
|
||||||
|
*/
|
||||||
private Boolean isPlaying;
|
private Boolean isPlaying;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,7 +54,9 @@ public class GSGrid extends JLabel {
|
|||||||
initializeGrid();
|
initializeGrid();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialise la grille avec des cases vides
|
/**
|
||||||
|
* Initialise la grille avec des cases vides
|
||||||
|
*/
|
||||||
private void initializeGrid() {
|
private void initializeGrid() {
|
||||||
FlowLayout gestionnaire = new FlowLayout();
|
FlowLayout gestionnaire = new FlowLayout();
|
||||||
this.setLayout(gestionnaire);
|
this.setLayout(gestionnaire);
|
||||||
@ -48,7 +75,12 @@ public class GSGrid extends JLabel {
|
|||||||
this.add(gridContainer);
|
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) {
|
private Border determineBorder(int i, int j) {
|
||||||
int top = (i == 0) ? 5 : 1;
|
int top = (i == 0) ? 5 : 1;
|
||||||
int bottom = ((i + 1) % 3 == 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);
|
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) {
|
private void setCellBorder(int i, int j) {
|
||||||
cases[i][j].setBorder(determineBorder(i, j));
|
cases[i][j].setBorder(determineBorder(i, j));
|
||||||
}
|
}
|
||||||
@ -103,8 +139,12 @@ public class GSGrid extends JLabel {
|
|||||||
return cases[i][j].getValue();
|
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 i = 0 ; i < GRID_SIZE ; i++ ) {
|
||||||
for (int j = 0 ; j < GRID_SIZE ; j++ ) {
|
for (int j = 0 ; j < GRID_SIZE ; j++ ) {
|
||||||
if (cases[i][j].getActivity() && (i != x || j != y)) {
|
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() {
|
public int whoIsActive_X() {
|
||||||
return activeX;
|
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() {
|
public int whoIsActive_Y() {
|
||||||
return activeY;
|
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) {
|
public void setValuetoCase(int x, int y, int val) {
|
||||||
if (cases[x][y].getActivity() && getMode()) {
|
if (cases[x][y].getActivity() && getMode()) {
|
||||||
cases[x][y].updateValue(val);
|
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(){
|
public Boolean isComplete(){
|
||||||
for (int i = 0 ; i < 9 ; i++ ) {
|
for (int i = 0 ; i < 9 ; i++ ) {
|
||||||
for (int j = 0 ; j < 9 ; j++ ) {
|
for (int j = 0 ; j < 9 ; j++ ) {
|
||||||
@ -145,17 +199,26 @@ public class GSGrid extends JLabel {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Active ou désactive le mode de jeu
|
/**
|
||||||
public void isPlaying(Boolean _bool) {
|
* Active ou désactive le mode de jeu
|
||||||
this.isPlaying = _bool;
|
* @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() {
|
public Boolean getMode() {
|
||||||
return this.isPlaying;
|
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() {
|
public boolean solve() {
|
||||||
for (int row = 0; row < 9; row++) {
|
for (int row = 0; row < 9; row++) {
|
||||||
for (int column = 0; column < 9; column++) {
|
for (int column = 0; column < 9; column++) {
|
||||||
|
@ -33,7 +33,6 @@ public class GSImport {
|
|||||||
/**
|
/**
|
||||||
* Constructeur pour créer une instance de GridMakerImport.
|
* Constructeur pour créer une instance de GridMakerImport.
|
||||||
* @param frame La fenêtre précédente
|
* @param frame La fenêtre précédente
|
||||||
* @param sudokuGrid La grille Sudoku
|
|
||||||
*/
|
*/
|
||||||
public GSImport(Window frame) {
|
public GSImport(Window frame) {
|
||||||
this.previousFrame = frame;
|
this.previousFrame = frame;
|
||||||
|
@ -69,7 +69,7 @@ public class GSPlay {
|
|||||||
/**
|
/**
|
||||||
* Constructeur de la classe GSPlay.
|
* Constructeur de la classe GSPlay.
|
||||||
* @param grille La grille de Sudoku.
|
* @param grille La grille de Sudoku.
|
||||||
* @param frame La fenêtre principale.
|
* @param window La fenêtre principale.
|
||||||
*/
|
*/
|
||||||
public GSPlay(Window window, GSGrid grille) {
|
public GSPlay(Window window, GSGrid grille) {
|
||||||
this.ma_Grille = grille;
|
this.ma_Grille = grille;
|
||||||
|
@ -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) {
|
public static void main(String[] args) {
|
||||||
Window fenetre = new Window(); // Création d'une fenêtre
|
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
|
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);
|
HomeView gmHomeView = new HomeView(fenetre, "Sudoku Grid Creator", "Par Moncef & Marco", gmButtonTexts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
public static void main(String[] args) {
|
||||||
Window fenetre = new Window(); // Création d'une fenêtre
|
Window fenetre = new Window(); // Création d'une fenêtre
|
||||||
String[] gsButtonTexts = {"Jouer", "Règles", "Quitter"}; // Texte des boutons pour le menu du GridSolver
|
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);
|
HomeView gsHomeView = new HomeView(fenetre, "Sudoku Game", "Par Moncef & Marco", gsButtonTexts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,30 +14,94 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class HomeView extends JPanel {
|
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";
|
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";
|
private final String AUDIO_OFF = "img/iconeAudioMuted.png";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Le chemin pour accéder à la musique
|
||||||
|
*/
|
||||||
private final String MUSIC_FILE = "audio/musiqueDeFond.wav";
|
private final String MUSIC_FILE = "audio/musiqueDeFond.wav";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* La taille des boutons
|
||||||
|
*/
|
||||||
private final Dimension BUTTON_SIZE = new Dimension(300, 60);
|
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);
|
private final Color BACKGROUND_COLOR = new Color(54, 91, 109);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* La couleur du texte du titre
|
||||||
|
*/
|
||||||
private final Color TITLE_TEXT_COLOR = Color.WHITE;
|
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);
|
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);
|
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 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
|
* Textes des boutons
|
||||||
private MusicButton musicButton; // Bouton pour contrôler la musique
|
*/
|
||||||
private final Window window; // Fenêtre parente
|
private final String[] BUTTON_TEXTS;
|
||||||
private JPanel titlePanel; // Panneau pour le titre
|
|
||||||
private JPanel buttonPanel; // Panneau pour les boutons
|
/**
|
||||||
private JLabel imageLabel; // Étiquette pour l'image
|
* Tableau de titres pour le titre principal et le sous-titre
|
||||||
private List<Button> buttonsList; // Liste des boutons créés
|
*/
|
||||||
|
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.
|
* Constructeur de la classe HomeView.
|
||||||
* Initialise la fenêtre parente et crée les composants de la page d'accueil.
|
* Initialise la fenêtre parente et crée les composants de la page d'accueil.
|
||||||
*
|
|
||||||
* @param window La fenêtre parente.
|
* @param window La fenêtre parente.
|
||||||
* @param mainTitle Le titre principal de la page.
|
* @param mainTitle Le titre principal de la page.
|
||||||
* @param subTitle Le sous-titre de la page.
|
* @param subTitle Le sous-titre de la page.
|
||||||
|
@ -8,6 +8,13 @@ import javax.swing.JOptionPane;
|
|||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class RulesDialogManager implements DialogManager {
|
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.
|
* Affiche la boîte de dialogue des règles du Sudoku.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user