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 Marco ORFAO
|
||||
*/
|
||||
|
||||
public class Button extends JButton {
|
||||
/**
|
||||
* Constructor
|
||||
|
@ -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();
|
||||
}
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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);
|
||||
|
||||
/**
|
||||
|
@ -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];
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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 {
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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++) {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user