Séparation des programmes
This commit is contained in:
parent
e11400fbd0
commit
064ba1a91f
19
Makefile
19
Makefile
@ -1,19 +1,10 @@
|
|||||||
# If the first argument is "run"...
|
|
||||||
ifeq (run,$(firstword $(MAKECMDGOALS)))
|
|
||||||
# use the rest as arguments for "run"
|
|
||||||
RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
|
|
||||||
# ...and turn them into do-nothing targets
|
|
||||||
$(eval $(RUN_ARGS):;@:)
|
|
||||||
endif
|
|
||||||
|
|
||||||
### VARIABLES ###
|
|
||||||
|
|
||||||
JC := javac
|
JC := javac
|
||||||
JCFLAGS := -encoding UTF-8 -implicit:none
|
JCFLAGS := -encoding UTF-8 -implicit:none
|
||||||
JVM := java
|
JVM := java
|
||||||
JVMFLAGS :=
|
JVMFLAGS :=
|
||||||
|
|
||||||
SRCDIR := ./src/GridSolver
|
SRCDIR := ./src
|
||||||
OUTDIR := ./out
|
OUTDIR := ./out
|
||||||
DOCDIR := ./doc
|
DOCDIR := ./doc
|
||||||
SRC := $(wildcard $(SRCDIR)/*.java)
|
SRC := $(wildcard $(SRCDIR)/*.java)
|
||||||
@ -25,11 +16,13 @@ $(OUTDIR)/%.class : $(SRCDIR)/%.java
|
|||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
${JC} ${JCFLAGS} -cp $(SRCDIR) -d $(OUTDIR) $<
|
${JC} ${JCFLAGS} -cp $(SRCDIR) -d $(OUTDIR) $<
|
||||||
|
|
||||||
|
|
||||||
### REGLES OPTIONNELLES ###
|
### REGLES OPTIONNELLES ###
|
||||||
|
|
||||||
run : $(OFILES)
|
GridMaker : $(OFILES)
|
||||||
${JVM} ${JVMFLAGS} -cp $(OUTDIR) Main $(RUN_ARGS)
|
${JVM} ${JVMFLAGS} -cp $(OUTDIR) GridMaker $(RUN_ARGS)
|
||||||
|
|
||||||
|
GridSolver : $(OFILES)
|
||||||
|
${JVM} ${JVMFLAGS} -cp $(OUTDIR) GridSolver $(RUN_ARGS)
|
||||||
|
|
||||||
clean :
|
clean :
|
||||||
-rm -rf $(OUTDIR)
|
-rm -rf $(OUTDIR)
|
||||||
|
@ -8,7 +8,7 @@ import javax.swing.*;
|
|||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GridMakerCase extends JPanel {
|
public class GMCase extends JPanel {
|
||||||
|
|
||||||
private int cellValue = 0; // Valeur actuelle de la case
|
private int cellValue = 0; // Valeur actuelle de la case
|
||||||
private String displayText = ""; // Texte à afficher dans la case
|
private String displayText = ""; // Texte à afficher dans la case
|
||||||
@ -18,7 +18,7 @@ public class GridMakerCase extends JPanel {
|
|||||||
* Constructeur par défaut de GridMakerCase.
|
* Constructeur par défaut de GridMakerCase.
|
||||||
* Initialise le bouton avec les propriétés nécessaires, crée un GridMakerCaseListener et l'ajoute au bouton.
|
* Initialise le bouton avec les propriétés nécessaires, crée un GridMakerCaseListener et l'ajoute au bouton.
|
||||||
*/
|
*/
|
||||||
public GridMakerCase() {
|
public GMCase() {
|
||||||
actionButton.setOpaque(false);
|
actionButton.setOpaque(false);
|
||||||
actionButton.setContentAreaFilled(false);
|
actionButton.setContentAreaFilled(false);
|
||||||
actionButton.setBorderPainted(false);
|
actionButton.setBorderPainted(false);
|
||||||
@ -31,7 +31,7 @@ public class GridMakerCase extends JPanel {
|
|||||||
setPreferredSize(new Dimension(60, 60));
|
setPreferredSize(new Dimension(60, 60));
|
||||||
|
|
||||||
// Crée un GridMakerCaseListener et l'ajoute au bouton
|
// Crée un GridMakerCaseListener et l'ajoute au bouton
|
||||||
GridMakerCaseListener listener = new GridMakerCaseListener(this);
|
GMCaseListener listener = new GMCaseListener(this);
|
||||||
actionButton.addKeyListener(listener);
|
actionButton.addKeyListener(listener);
|
||||||
}
|
}
|
||||||
|
|
@ -7,15 +7,15 @@ import java.awt.event.KeyListener;
|
|||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GridMakerCaseListener implements KeyListener {
|
public class GMCaseListener implements KeyListener {
|
||||||
|
|
||||||
private GridMakerCase gridMakerCase;
|
private GMCase gridMakerCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur de GridMakerCaseListener.
|
* Constructeur de GridMakerCaseListener.
|
||||||
* @param gridMakerCase La case à écouter.
|
* @param gridMakerCase La case à écouter.
|
||||||
*/
|
*/
|
||||||
public GridMakerCaseListener(GridMakerCase gridMakerCase) {
|
public GMCaseListener(GMCase gridMakerCase) {
|
||||||
this.gridMakerCase = gridMakerCase;
|
this.gridMakerCase = gridMakerCase;
|
||||||
}
|
}
|
||||||
|
|
@ -1,24 +1,24 @@
|
|||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La classe GridMakerChecker est utilisée pour vérifier la cohérence de la grille.
|
* La classe GMChecker est utilisée pour vérifier la cohérence de la grille.
|
||||||
* Elle vérifie si les lignes, les colonnes et les régions de la grille respectent les règles du jeu.
|
* Elle vérifie si les lignes, les colonnes et les régions de la grille respectent les règles du jeu.
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GridMakerChecker {
|
public class GMChecker {
|
||||||
|
|
||||||
private GridMakerGrid grid;
|
private GMGrid grid;
|
||||||
private GridMakerCheckerListener checkerListener;
|
private GMCheckerListener checkerListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur pour créer une instance de GridMakerChecker.
|
* Constructeur pour créer une instance de GMChecker.
|
||||||
* @param grid La grille à vérifier
|
* @param grid La grille à vérifier
|
||||||
*/
|
*/
|
||||||
public GridMakerChecker(GridMakerGrid grid) {
|
public GMChecker(GMGrid grid) {
|
||||||
this.grid = grid;
|
this.grid = grid;
|
||||||
this.checkerListener = new GridMakerCheckerListener(this);
|
this.checkerListener = new GMCheckerListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
28
src/GMCheckerListener.java
Normal file
28
src/GMCheckerListener.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* La classe GMCheckerListener est utilisée pour gérer les événements liés à la vérification de la grille.
|
||||||
|
*/
|
||||||
|
public class GMCheckerListener implements ActionListener {
|
||||||
|
|
||||||
|
private GMChecker gridMakerChecker;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur de GMCheckerListener.
|
||||||
|
* @param gridMakerChecker L'instance de GMChecker à utiliser.
|
||||||
|
*/
|
||||||
|
public GMCheckerListener(GMChecker gridMakerChecker) {
|
||||||
|
this.gridMakerChecker = gridMakerChecker;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Méthode invoquée lorsqu'un bouton est cliqué.
|
||||||
|
* Lance la vérification de la grille.
|
||||||
|
* @param e L'événement d'action
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
gridMakerChecker.checkGrid();
|
||||||
|
}
|
||||||
|
}
|
@ -12,16 +12,16 @@ import javax.swing.border.Border;
|
|||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GridMakerGrid extends JPanel {
|
public class GMGrid extends JPanel {
|
||||||
|
|
||||||
private int[][] gridValues = new int[9][9]; // Stores the values of each cell in the grid
|
private int[][] gridValues = new int[9][9]; // Stores the values of each cell in the grid
|
||||||
private GridMakerCase[][] gridCases = new GridMakerCase[9][9]; // Represents the individual cells 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
|
private int[] exportedGrid = new int[9]; // Stores the grid values in an exportable format
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new GridMakerGrid object and initializes the grid.
|
* Constructs a new GMGrid object and initializes the grid.
|
||||||
*/
|
*/
|
||||||
public GridMakerGrid() {
|
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)); // On change la couleur de fond (les cotés de la grille)
|
||||||
}
|
}
|
||||||
@ -53,7 +53,7 @@ public class GridMakerGrid extends JPanel {
|
|||||||
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 GridMakerCase();
|
gridCases[i][j] = new GMCase();
|
||||||
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)); // Utilisation de la fonction pour définir les bordures
|
||||||
}
|
}
|
@ -8,7 +8,7 @@ import java.awt.event.ActionListener;
|
|||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
class HomeButtonClickListener implements ActionListener {
|
class GMHomeButtonClickListener implements ActionListener {
|
||||||
private Window window;
|
private Window window;
|
||||||
private DialogManager rulesDialogManager;
|
private DialogManager rulesDialogManager;
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ class HomeButtonClickListener implements ActionListener {
|
|||||||
* Constructs a ButtonClickListener with the specified window.
|
* Constructs a ButtonClickListener with the specified window.
|
||||||
* @param window The window where the actions will be performed.
|
* @param window The window where the actions will be performed.
|
||||||
*/
|
*/
|
||||||
public HomeButtonClickListener(Window window) {
|
public GMHomeButtonClickListener(Window window) {
|
||||||
this.window = window;
|
this.window = window;
|
||||||
this.rulesDialogManager = new RulesDialogManager();
|
this.rulesDialogManager = new RulesDialogManager();
|
||||||
}
|
}
|
||||||
@ -31,7 +31,7 @@ class HomeButtonClickListener implements ActionListener {
|
|||||||
switch (buttonText) {
|
switch (buttonText) {
|
||||||
case "Générer une grille":
|
case "Générer une grille":
|
||||||
Window.removeAllComponents(this.window);
|
Window.removeAllComponents(this.window);
|
||||||
GridMakeUserInterfaceView vueCreationGrille = new GridMakeUserInterfaceView(this.window); // Lancer le créateur de grille
|
GMUserInterfaceView vueCreationGrille = new GMUserInterfaceView(this.window); // Lancer le créateur de grille
|
||||||
break;
|
break;
|
||||||
case "Règles":
|
case "Règles":
|
||||||
rulesDialogManager.showDialog(); // Afficher les règles
|
rulesDialogManager.showDialog(); // Afficher les règles
|
@ -10,7 +10,7 @@ import java.awt.*;
|
|||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class HomeView extends JPanel {
|
public class GMHomeView extends JPanel {
|
||||||
|
|
||||||
// Constantes pour les chemins des icônes et des fichiers audio, ainsi que pour les dimensions et les couleurs
|
// Constantes pour les chemins des icônes et des fichiers audio, ainsi que pour les dimensions et les couleurs
|
||||||
private final String AUDIO_ON = "img/iconeAudio.png";
|
private final String AUDIO_ON = "img/iconeAudio.png";
|
||||||
@ -41,7 +41,7 @@ public class HomeView extends JPanel {
|
|||||||
* 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.
|
||||||
*/
|
*/
|
||||||
public HomeView(Window window) {
|
public GMHomeView(Window window) {
|
||||||
this.window = window;
|
this.window = window;
|
||||||
createComponents();
|
createComponents();
|
||||||
addComponentsToWindow();
|
addComponentsToWindow();
|
||||||
@ -70,7 +70,7 @@ public class HomeView extends JPanel {
|
|||||||
buttonPanel.setLayout(buttonLayout);
|
buttonPanel.setLayout(buttonLayout);
|
||||||
buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
|
buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
|
||||||
buttonPanel.setBackground(BACKGROUND_COLOR);
|
buttonPanel.setBackground(BACKGROUND_COLOR);
|
||||||
HomeButtonClickListener listenerButton = new HomeButtonClickListener(window);
|
GMHomeButtonClickListener listenerButton = new GMHomeButtonClickListener(window);
|
||||||
for (String text : BUTTON_TEXTS) {
|
for (String text : BUTTON_TEXTS) {
|
||||||
Button button = new Button(text, BUTTON_SIZE, BUTTON_FONT, Color.white);
|
Button button = new Button(text, BUTTON_SIZE, BUTTON_FONT, Color.white);
|
||||||
button.addActionListener(listenerButton);
|
button.addActionListener(listenerButton);
|
@ -1,21 +1,21 @@
|
|||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La classe GridMakerHowToCreateController est un contrôleur qui gère l'affichage de la fenêtre de création de grille.
|
* La classe GMHowToCreateController est un contrôleur qui gère l'affichage de la fenêtre de création de grille.
|
||||||
* Elle implémente l'interface ActionListener pour réagir aux événements de clic sur un bouton.
|
* Elle implémente l'interface ActionListener pour réagir aux événements de clic sur un bouton.
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GridMakerHowToCreateController implements ActionListener {
|
public class GMHowToCreateController implements ActionListener {
|
||||||
private GridMakerHowToCreateDialogManager howToCreateGrid;
|
private GMHowToCreateDialogManager howToCreateGrid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur pour créer une instance de GridMakerHowToCreateController.
|
* Constructeur pour créer une instance de GMHowToCreateController.
|
||||||
* Initialise le gestionnaire de dialogue pour la création de grille.
|
* Initialise le gestionnaire de dialogue pour la création de grille.
|
||||||
*/
|
*/
|
||||||
public GridMakerHowToCreateController(){
|
public GMHowToCreateController(){
|
||||||
this.howToCreateGrid = new GridMakerHowToCreateDialogManager();
|
this.howToCreateGrid = new GMHowToCreateDialogManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,21 +1,21 @@
|
|||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La classe GridMakerHowToCreateDialogManager est un gestionnaire de dialogue qui affiche des instructions
|
* La classe GMHowToCreateDialogManager est un gestionnaire de dialogue qui affiche des instructions
|
||||||
* sur la manière de créer une grille dans une boîte de dialogue.
|
* sur la manière de créer une grille dans une boîte de dialogue.
|
||||||
* Elle implémente l'interface DialogManager.
|
* Elle implémente l'interface DialogManager.
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GridMakerHowToCreateDialogManager implements DialogManager {
|
public class GMHowToCreateDialogManager implements DialogManager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void showDialog() {
|
public void showDialog() {
|
||||||
GridMakerHowToCreateView howToCreateGrid = new GridMakerHowToCreateView();
|
GMHowToCreateView howToCreateGrid = new GMHowToCreateView();
|
||||||
JOptionPane.showMessageDialog(null, howToCreateGrid, "Comment créer une grille ?", JOptionPane.PLAIN_MESSAGE);
|
JOptionPane.showMessageDialog(null, howToCreateGrid, "Comment créer une grille ?", JOptionPane.PLAIN_MESSAGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,13 +2,13 @@ import javax.swing.*;
|
|||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La classe GridMakerHowToCreateView est une vue qui affiche les instructions pour créer une grille dans une boîte de dialogue.
|
* La classe GMHowToCreateView est une vue qui affiche les instructions pour créer une grille dans une boîte de dialogue.
|
||||||
* Elle hérite de JPanel pour servir de composant d'interface utilisateur.
|
* Elle hérite de JPanel pour servir de composant d'interface utilisateur.
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GridMakerHowToCreateView extends JPanel {
|
public class GMHowToCreateView extends JPanel {
|
||||||
private Dimension FRAME_SIZE = new Dimension(600, 500);
|
private Dimension FRAME_SIZE = new Dimension(600, 500);
|
||||||
private Color BACKGROUND_COLOR = new Color(54, 91, 109);
|
private Color BACKGROUND_COLOR = new Color(54, 91, 109);
|
||||||
|
|
||||||
@ -25,10 +25,10 @@ public class GridMakerHowToCreateView extends JPanel {
|
|||||||
private Font TEXT_FONT = new Font("Arial", Font.PLAIN, 20);
|
private Font TEXT_FONT = new Font("Arial", Font.PLAIN, 20);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur pour créer une instance de GridMakerHowToCreateView.
|
* Constructeur pour créer une instance de GMHowToCreateView.
|
||||||
* Initialise les composants de la vue et les dispose selon un BorderLayout.
|
* Initialise les composants de la vue et les dispose selon un BorderLayout.
|
||||||
*/
|
*/
|
||||||
public GridMakerHowToCreateView() {
|
public GMHowToCreateView() {
|
||||||
BorderLayout borderLayout = new BorderLayout();
|
BorderLayout borderLayout = new BorderLayout();
|
||||||
this.setLayout(borderLayout);
|
this.setLayout(borderLayout);
|
||||||
this.setBackground(this.BACKGROUND_COLOR); // Définit la couleur d'arrière-plan du panneau
|
this.setBackground(this.BACKGROUND_COLOR); // Définit la couleur d'arrière-plan du panneau
|
@ -4,26 +4,26 @@ import javax.swing.filechooser.FileNameExtensionFilter;
|
|||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La classe GridMakerImport est utilisée pour importer une grille à partir d'un fichier.
|
* La classe GMImport est utilisée pour importer une grille à partir d'un fichier.
|
||||||
* Elle implémente l'interface ActionListener pour réagir aux événements de clic sur un bouton.
|
* Elle implémente l'interface ActionListener pour réagir aux événements de clic sur un bouton.
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GridMakerImport implements ActionListener {
|
public class GMImport implements ActionListener {
|
||||||
|
|
||||||
private JFrame previousFrame;
|
private JFrame previousFrame;
|
||||||
private GridMakerGrid grid;
|
private GMGrid grid;
|
||||||
private boolean accessible;
|
private boolean accessible;
|
||||||
private File file;
|
private File file;
|
||||||
private int[] importedValues = new int[9];
|
private int[] importedValues = new int[9];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur pour créer une instance de GridMakerImport.
|
* Constructeur pour créer une instance de GMImport.
|
||||||
* @param frame La fenêtre précédente
|
* @param frame La fenêtre précédente
|
||||||
* @param sudokuGrid La grille Sudoku
|
* @param sudokuGrid La grille Sudoku
|
||||||
*/
|
*/
|
||||||
public GridMakerImport(JFrame frame, GridMakerGrid sudokuGrid) {
|
public GMImport(JFrame frame, GMGrid sudokuGrid) {
|
||||||
this.previousFrame = frame;
|
this.previousFrame = frame;
|
||||||
this.grid = sudokuGrid;
|
this.grid = sudokuGrid;
|
||||||
}
|
}
|
@ -2,25 +2,25 @@ import java.awt.event.ActionEvent;
|
|||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La classe GridMakerResetGrid 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 GridMakerResetGrid implements ActionListener {
|
public class GMResetGrid implements ActionListener {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La grille à réinitialiser.
|
* La grille à réinitialiser.
|
||||||
*/
|
*/
|
||||||
private GridMakerGrid myGrid;
|
private GMGrid myGrid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur pour créer une instance de GridMakerResetGrid.
|
* Constructeur pour créer une instance de GMResetGrid.
|
||||||
* @param grid Grille à réinitialiser
|
* @param grid Grille à réinitialiser
|
||||||
*/
|
*/
|
||||||
public GridMakerResetGrid(GridMakerGrid grid) {
|
public GMResetGrid(GMGrid grid) {
|
||||||
this.myGrid = grid;
|
this.myGrid = grid;
|
||||||
}
|
}
|
||||||
|
|
@ -1,20 +1,20 @@
|
|||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GridMakerRules gère les actions liées aux règles du jeu.
|
* GMRules gère les actions liées aux règles du jeu.
|
||||||
* Cette classe implémente ActionListener pour réagir aux clics sur un bouton.
|
* Cette classe implémente ActionListener pour réagir aux clics sur un bouton.
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GridMakerRules implements ActionListener {
|
public class GMRules implements ActionListener {
|
||||||
private RulesDialogManager rulesDialog; // Gestionnaire de la boîte de dialogue des règles
|
private RulesDialogManager rulesDialog; // Gestionnaire de la boîte de dialogue des règles
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur de GridMakerRules.
|
* Constructeur de GMRules.
|
||||||
* Initialise le gestionnaire de boîte de dialogue des règles.
|
* Initialise le gestionnaire de boîte de dialogue des règles.
|
||||||
*/
|
*/
|
||||||
public GridMakerRules(){
|
public GMRules(){
|
||||||
this.rulesDialog = new RulesDialogManager();
|
this.rulesDialog = new RulesDialogManager();
|
||||||
}
|
}
|
||||||
|
|
@ -13,18 +13,18 @@ import java.awt.event.ActionEvent;
|
|||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GridMakerSaver implements ActionListener {
|
public class GMSaver implements ActionListener {
|
||||||
|
|
||||||
private File selectedFile; // Le fichier sélectionné pour sauvegarde
|
private File selectedFile; // Le fichier sélectionné pour sauvegarde
|
||||||
private JFrame parentFrame; // La fenêtre parent
|
private JFrame parentFrame; // La fenêtre parent
|
||||||
private GridMakerGrid grid; // La grille de jeu à sauvegarder
|
private GMGrid grid; // La grille de jeu à sauvegarder
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur de la classe GridMakerSaver.
|
* Constructeur de la classe GMSaver.
|
||||||
* @param parentFrame La fenêtre parent.
|
* @param parentFrame La fenêtre parent.
|
||||||
* @param grid La grille de jeu à sauvegarder.
|
* @param grid La grille de jeu à sauvegarder.
|
||||||
*/
|
*/
|
||||||
public GridMakerSaver(JFrame parentFrame, GridMakerGrid grid) {
|
public GMSaver(JFrame parentFrame, GMGrid grid) {
|
||||||
this.parentFrame = parentFrame;
|
this.parentFrame = parentFrame;
|
||||||
this.grid = grid;
|
this.grid = grid;
|
||||||
}
|
}
|
||||||
@ -48,7 +48,7 @@ public class GridMakerSaver implements ActionListener {
|
|||||||
* @return true si la grille est valide, sinon false.
|
* @return true si la grille est valide, sinon false.
|
||||||
*/
|
*/
|
||||||
private boolean isValidGrid() {
|
private boolean isValidGrid() {
|
||||||
GridMakerChecker test = new GridMakerChecker(grid);
|
GMChecker test = new GMChecker(grid);
|
||||||
return test.isCorrect();
|
return test.isCorrect();
|
||||||
}
|
}
|
||||||
|
|
@ -1,10 +1,10 @@
|
|||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
public class GridMakeUserInterfaceController implements ActionListener {
|
public class GMUserInterfaceController implements ActionListener {
|
||||||
private Window window;
|
private Window window;
|
||||||
|
|
||||||
public GridMakeUserInterfaceController(Window window) {
|
public GMUserInterfaceController(Window window) {
|
||||||
this.window = window;
|
this.window = window;
|
||||||
}
|
}
|
||||||
|
|
@ -6,18 +6,18 @@ import java.awt.BorderLayout;
|
|||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
|
||||||
public class GridMakeUserInterfaceView {
|
public class GMUserInterfaceView {
|
||||||
private JMenuBar menuBar = new JMenuBar();
|
private JMenuBar menuBar = new JMenuBar();
|
||||||
private Container content;
|
private Container content;
|
||||||
private GridMakerGrid grid;
|
private GMGrid grid;
|
||||||
|
|
||||||
public GridMakeUserInterfaceView(Window window) {
|
public GMUserInterfaceView(Window window) {
|
||||||
window.setPageTitle("Créateur de grille");
|
window.setPageTitle("Créateur de grille");
|
||||||
|
|
||||||
content = window.getContentPane();
|
content = window.getContentPane();
|
||||||
BorderLayout gestionnaire = new BorderLayout();
|
BorderLayout gestionnaire = new BorderLayout();
|
||||||
content.setLayout(gestionnaire);
|
content.setLayout(gestionnaire);
|
||||||
grid = new GridMakerGrid();
|
grid = new GMGrid();
|
||||||
|
|
||||||
// Création des menus
|
// Création des menus
|
||||||
JMenu menuFichier = createMenu("Fichier");
|
JMenu menuFichier = createMenu("Fichier");
|
||||||
@ -25,20 +25,20 @@ public class GridMakeUserInterfaceView {
|
|||||||
JMenu menuAide = createMenu("Aide");
|
JMenu menuAide = createMenu("Aide");
|
||||||
|
|
||||||
// Ajout des éléments de menu
|
// Ajout des éléments de menu
|
||||||
JMenuItem nouveauItem = createMenuItem("Nouveau", new GridMakerResetGrid(grid));
|
JMenuItem nouveauItem = createMenuItem("Nouveau", new GMResetGrid(grid));
|
||||||
JMenuItem chargerItem = createMenuItem("Charger", new GridMakerImport(window, grid));
|
JMenuItem chargerItem = createMenuItem("Charger", new GMImport(window, grid));
|
||||||
JMenuItem sauvegarderItem = createMenuItem("Sauvegarder", new GridMakerSaver(window, grid));
|
JMenuItem sauvegarderItem = createMenuItem("Sauvegarder", new GMSaver(window, grid));
|
||||||
GridMakerChecker checker = new GridMakerChecker(grid); // Créez une instance de GridMakerChecker
|
GMChecker checker = new GMChecker(grid); // Créez une instance de GMChecker
|
||||||
GridMakerCheckerListener checkerListener = new GridMakerCheckerListener(checker); // Créez une instance de GridMakerCheckerListener en passant GridMakerChecker en argument
|
GMCheckerListener checkerListener = new GMCheckerListener(checker); // Créez une instance de GMCheckerListener en passant GMChecker en argument
|
||||||
JMenuItem verifierItem = createMenuItem("Vérifier", checkerListener);
|
JMenuItem verifierItem = createMenuItem("Vérifier", checkerListener);
|
||||||
JMenuItem aideGrilleItem = createMenuItem("Comment créer une grille", new GridMakerHowToCreateController());
|
JMenuItem aideGrilleItem = createMenuItem("Comment créer une grille", new GMHowToCreateController());
|
||||||
JMenuItem reglesSudokuItem = createMenuItem("Règles du Sudoku", new GridMakerRules());
|
JMenuItem reglesSudokuItem = createMenuItem("Règles du Sudoku", new GMRules());
|
||||||
|
|
||||||
|
|
||||||
// Ajout du menu "Jouer"
|
// Ajout du menu "Jouer"
|
||||||
JMenu menuJouer = createMenu("Quitter");
|
JMenu menuJouer = createMenu("Quitter");
|
||||||
// Création de l'élément de menu "Retour"
|
// Création de l'élément de menu "Retour"
|
||||||
JMenuItem retourMenu = createMenuItem("Quitter",new GridMakeUserInterfaceController(window));
|
JMenuItem retourMenu = createMenuItem("Quitter",new GMUserInterfaceController(window));
|
||||||
// Ajout de l'élément "Retour" au menu "Jouer"
|
// Ajout de l'élément "Retour" au menu "Jouer"
|
||||||
menuJouer.add(retourMenu);
|
menuJouer.add(retourMenu);
|
||||||
// Ajout du menu "Jouer" à la barre de menu
|
// Ajout du menu "Jouer" à la barre de menu
|
@ -8,7 +8,7 @@ import java.awt.event.ActionListener;
|
|||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
class HomeButtonClickListener implements ActionListener {
|
class GSHomeButtonClickListener implements ActionListener {
|
||||||
private Window window;
|
private Window window;
|
||||||
private DialogManager rulesDialogManager;
|
private DialogManager rulesDialogManager;
|
||||||
private GSMenu menuJeu;
|
private GSMenu menuJeu;
|
||||||
@ -17,7 +17,7 @@ class HomeButtonClickListener implements ActionListener {
|
|||||||
* Constructs a ButtonClickListener with the specified window.
|
* Constructs a ButtonClickListener with the specified window.
|
||||||
* @param window The window where the actions will be performed.
|
* @param window The window where the actions will be performed.
|
||||||
*/
|
*/
|
||||||
public HomeButtonClickListener(Window window) {
|
public GSHomeButtonClickListener(Window window) {
|
||||||
this.window = window;
|
this.window = window;
|
||||||
this.rulesDialogManager = new RulesDialogManager();
|
this.rulesDialogManager = new RulesDialogManager();
|
||||||
}
|
}
|
@ -10,7 +10,7 @@ import java.awt.*;
|
|||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class HomeView extends JPanel {
|
public class GSHomeView extends JPanel {
|
||||||
|
|
||||||
// Constantes pour les chemins des icônes et des fichiers audio, ainsi que pour les dimensions et les couleurs
|
// Constantes pour les chemins des icônes et des fichiers audio, ainsi que pour les dimensions et les couleurs
|
||||||
private final String AUDIO_ON = "img/iconeAudio.png";
|
private final String AUDIO_ON = "img/iconeAudio.png";
|
||||||
@ -41,7 +41,7 @@ public class HomeView extends JPanel {
|
|||||||
* 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.
|
||||||
*/
|
*/
|
||||||
public HomeView(Window window) {
|
public GSHomeView(Window window) {
|
||||||
this.window = window;
|
this.window = window;
|
||||||
createComponents();
|
createComponents();
|
||||||
addComponentsToWindow();
|
addComponentsToWindow();
|
||||||
@ -70,7 +70,7 @@ public class HomeView extends JPanel {
|
|||||||
buttonPanel.setLayout(buttonLayout);
|
buttonPanel.setLayout(buttonLayout);
|
||||||
buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
|
buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
|
||||||
buttonPanel.setBackground(BACKGROUND_COLOR);
|
buttonPanel.setBackground(BACKGROUND_COLOR);
|
||||||
HomeButtonClickListener listenerButton = new HomeButtonClickListener(window);
|
GSHomeButtonClickListener listenerButton = new GSHomeButtonClickListener(window);
|
||||||
for (String text : BUTTON_TEXTS) {
|
for (String text : BUTTON_TEXTS) {
|
||||||
Button button = new Button(text, BUTTON_SIZE, BUTTON_FONT, Color.white);
|
Button button = new Button(text, BUTTON_SIZE, BUTTON_FONT, Color.white);
|
||||||
button.addActionListener(listenerButton);
|
button.addActionListener(listenerButton);
|
@ -1,6 +1,6 @@
|
|||||||
public class Main{
|
public class GridMaker{
|
||||||
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
|
||||||
HomeView menu = new HomeView(fenetre); // Création du menu sur la fenêtre
|
GMHomeView menu = new GMHomeView(fenetre); // Création du menu sur la fenêtre
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,72 +0,0 @@
|
|||||||
import javax.swing.*;
|
|
||||||
import java.awt.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class containing custom settings for JButtons.
|
|
||||||
* @version 1.0
|
|
||||||
* @author Moncef STITI
|
|
||||||
* @author Marco ORFAO
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class Button extends JButton {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
* @param text The text of the button
|
|
||||||
*/
|
|
||||||
public Button (String text) {
|
|
||||||
super(text);
|
|
||||||
setFont(new Font("Arial", Font.BOLD, 15));
|
|
||||||
setBackground(new Color(96, 175, 255));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
* @param text The text of the button
|
|
||||||
* @param color The background color of the button
|
|
||||||
*/
|
|
||||||
public Button (String text,Color color) {
|
|
||||||
super(text);
|
|
||||||
setFont(new Font("Arial", Font.BOLD, 15));
|
|
||||||
setBackground(color);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
* @param text The text of the button
|
|
||||||
* @param dimension The dimension of the button
|
|
||||||
*/
|
|
||||||
public Button(String text, Dimension dimension) {
|
|
||||||
super(text);
|
|
||||||
setPreferredSize(dimension);
|
|
||||||
setFont(new Font("Arial", Font.BOLD, 20));
|
|
||||||
setBackground(new Color(96, 175, 255));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
* @param text The text of the button
|
|
||||||
* @param dimension The dimension of the button
|
|
||||||
* @param font The font of the text in the button
|
|
||||||
*/
|
|
||||||
public Button(String text, Dimension dimension, Font font) {
|
|
||||||
super(text);
|
|
||||||
setPreferredSize(dimension);
|
|
||||||
setFont(font);
|
|
||||||
setBackground(new Color(96, 175, 255));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
* @param text The text of the button
|
|
||||||
* @param dimension The dimension of the button
|
|
||||||
* @param font The font of the text in the button
|
|
||||||
* @param color The background color of the button
|
|
||||||
*/
|
|
||||||
public Button(String text, Dimension dimension, Font font, Color color) {
|
|
||||||
super(text);
|
|
||||||
setPreferredSize(dimension);
|
|
||||||
setFont(font);
|
|
||||||
setBackground(color);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* La classe GridMakerCheckerListener est utilisée pour gérer les événements liés à la vérification de la grille.
|
|
||||||
*/
|
|
||||||
public class GridMakerCheckerListener implements ActionListener {
|
|
||||||
|
|
||||||
private GridMakerChecker gridMakerChecker;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructeur de GridMakerCheckerListener.
|
|
||||||
* @param gridMakerChecker L'instance de GridMakerChecker à utiliser.
|
|
||||||
*/
|
|
||||||
public GridMakerCheckerListener(GridMakerChecker gridMakerChecker) {
|
|
||||||
this.gridMakerChecker = gridMakerChecker;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Méthode invoquée lorsqu'un bouton est cliqué.
|
|
||||||
* Lance la vérification de la grille.
|
|
||||||
* @param e L'événement d'action
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
gridMakerChecker.checkGrid();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
public class Main{
|
public class GridSolver{
|
||||||
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
|
||||||
HomeView menu = new HomeView(fenetre); // Création du menu sur la fenêtre
|
GSHomeView menu = new GSHomeView(fenetre); // Création du menu sur la fenêtre
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
/**
|
|
||||||
* Interface containing definition to showDialog box.
|
|
||||||
* @version 1.0
|
|
||||||
* @author Moncef STITI
|
|
||||||
* @author Marco ORFAO
|
|
||||||
*/
|
|
||||||
public interface DialogManager {
|
|
||||||
void showDialog();
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* It provides a button that toggles between playing and stopping music when clicked.
|
|
||||||
* @version 1.0
|
|
||||||
* @author Moncef STITI
|
|
||||||
* @author Marco ORFAO
|
|
||||||
*/
|
|
||||||
public class MusicButton extends JButton {
|
|
||||||
private static MusicPlayer currentMusicPlayer;
|
|
||||||
private ImageIcon iconOn;
|
|
||||||
private ImageIcon iconOff;
|
|
||||||
private MusicPlayer musicPlayer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a MusicButton.
|
|
||||||
* @param onIconPath The file path for the icon when music is on.
|
|
||||||
* @param offIconPath The file path for the icon when music is off.
|
|
||||||
* @param musicFilePath The file path for the music file to be played.
|
|
||||||
*/
|
|
||||||
public MusicButton(String onIconPath, String offIconPath, String musicFilePath) {
|
|
||||||
|
|
||||||
this.iconOn = new ImageIcon(onIconPath);
|
|
||||||
this.iconOff = new ImageIcon(offIconPath);
|
|
||||||
setIcon(this.iconOff);
|
|
||||||
|
|
||||||
// Vérifie s'il y a déjà une musique en cours de lecture et l'arrête si nécessaire
|
|
||||||
if (currentMusicPlayer != null && currentMusicPlayer.isPlaying()) {
|
|
||||||
currentMusicPlayer.stop();
|
|
||||||
currentMusicPlayer = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.musicPlayer = new MusicPlayer(musicFilePath);
|
|
||||||
|
|
||||||
addActionListener(e -> {
|
|
||||||
if (currentMusicPlayer != null && currentMusicPlayer.isPlaying()) {
|
|
||||||
currentMusicPlayer.stop();
|
|
||||||
currentMusicPlayer = null;
|
|
||||||
setIcon(this.iconOff);
|
|
||||||
} else {
|
|
||||||
this.musicPlayer.play();
|
|
||||||
setIcon(this.iconOn);
|
|
||||||
currentMusicPlayer = this.musicPlayer;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,57 +0,0 @@
|
|||||||
import java.io.File;
|
|
||||||
import javax.sound.sampled.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class containign a simple music player that allows playing and stopping music.
|
|
||||||
* @version 1.0
|
|
||||||
* @author Moncef STITI
|
|
||||||
* @author Marco ORFAO
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class MusicPlayer {
|
|
||||||
private Clip clip;
|
|
||||||
private boolean isPlaying;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a MusicPlayer with the specified file path.
|
|
||||||
* @param filePath The path to the music file to be played.
|
|
||||||
*/
|
|
||||||
public MusicPlayer(String filePath) {
|
|
||||||
try {
|
|
||||||
File file = new File(filePath);
|
|
||||||
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
|
|
||||||
this.clip = AudioSystem.getClip();
|
|
||||||
this.clip.open(audioInputStream);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Starts playing the music.
|
|
||||||
*/
|
|
||||||
public void play() {
|
|
||||||
if (this.clip != null && !this.isPlaying) {
|
|
||||||
this.clip.start();
|
|
||||||
this.isPlaying = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Stops the music.
|
|
||||||
*/
|
|
||||||
public void stop() {
|
|
||||||
if (this.clip != null && this.isPlaying) {
|
|
||||||
this.clip.stop();
|
|
||||||
this.isPlaying = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if the music is currently playing.
|
|
||||||
* @return true if the music is playing, false otherwise.
|
|
||||||
*/
|
|
||||||
public boolean isPlaying() {
|
|
||||||
return this.isPlaying;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
import javax.swing.JOptionPane;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* RulesDialogManager gère l'affichage de la boîte de dialogue des règles.
|
|
||||||
* Cette classe implémente DialogManager pour définir la méthode showDialog.
|
|
||||||
* @version 1.0
|
|
||||||
* @author Moncef STITI
|
|
||||||
* @author Marco ORFAO
|
|
||||||
*/
|
|
||||||
public class RulesDialogManager implements DialogManager {
|
|
||||||
/**
|
|
||||||
* Affiche la boîte de dialogue des règles du Sudoku.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void showDialog() {
|
|
||||||
RulesSudoku rulesPanel = new RulesSudoku(); // Création du panneau contenant les règles
|
|
||||||
JOptionPane.showMessageDialog(null, rulesPanel, "Règles du Sudoku", JOptionPane.PLAIN_MESSAGE); // Affichage de la boîte de dialogue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
|||||||
import javax.swing.*;
|
|
||||||
import java.awt.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* RulesSudoku représente le panneau affichant les règles du Sudoku.
|
|
||||||
* Cette classe étend JPanel et définit le contenu des règles.
|
|
||||||
* @version 1.0
|
|
||||||
* @author Moncef STITI
|
|
||||||
* @author Marco ORFAO
|
|
||||||
*/
|
|
||||||
public class RulesSudoku extends JPanel {
|
|
||||||
private Dimension FRAME_SIZE = new Dimension(400, 500); // Taille de la fenêtre des règles
|
|
||||||
private Color BACKGROUND_COLOR = new Color(54, 91, 109); // Couleur d'arrière-plan du panneau
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructeur par défaut de RulesSudoku.
|
|
||||||
* Initialise le contenu des règles et configure l'apparence du panneau.
|
|
||||||
*/
|
|
||||||
public RulesSudoku() {
|
|
||||||
BorderLayout gestionnaireBorderLayout = new BorderLayout();
|
|
||||||
this.setLayout(gestionnaireBorderLayout);
|
|
||||||
this.setBackground(this.BACKGROUND_COLOR); // Couleur d'arrière-plan du panneau
|
|
||||||
|
|
||||||
JLabel titleLabel = new JLabel("Règles du Sudoku");
|
|
||||||
titleLabel.setFont(new Font("Copperplate", Font.BOLD, 40)); // Police du titre
|
|
||||||
titleLabel.setForeground(Color.WHITE); // Couleur du titre
|
|
||||||
|
|
||||||
JTextArea rulesTextArea = new JTextArea();
|
|
||||||
rulesTextArea.setText("Les règles du Sudoku :\n\n" +
|
|
||||||
"1. Le but du jeu est de remplir la grille avec une série de chiffres de 1 à 9 de telle sorte que chaque ligne, chaque colonne et chaque région de 3x3 contienne tous les chiffres de 1 à 9 sans répétition.\n\n" +
|
|
||||||
"2. Certains chiffres sont déjà placés dans la grille au départ et ne peuvent pas être modifiés.\n\n" +
|
|
||||||
"3. Utilisez la logique et le raisonnement pour remplir la grille avec les chiffres manquants.\n\n" +
|
|
||||||
"4. Le jeu est terminé lorsqu'il n'y a plus de cases vides et que toutes les règles sont respectées.");
|
|
||||||
rulesTextArea.setEditable(false);
|
|
||||||
rulesTextArea.setLineWrap(true);
|
|
||||||
rulesTextArea.setWrapStyleWord(true);
|
|
||||||
rulesTextArea.setFont(new Font("Arial", Font.PLAIN, 20)); // Police du texte des règles
|
|
||||||
rulesTextArea.setForeground(Color.WHITE); // Couleur du texte des règles
|
|
||||||
rulesTextArea.setBackground(this.BACKGROUND_COLOR); // Couleur d'arrière-plan du texte des règles
|
|
||||||
|
|
||||||
JScrollPane scrollPane = new JScrollPane(rulesTextArea);
|
|
||||||
|
|
||||||
this.add(titleLabel, BorderLayout.NORTH);
|
|
||||||
this.add(scrollPane, BorderLayout.CENTER);
|
|
||||||
|
|
||||||
this.setPreferredSize(this.FRAME_SIZE); // Taille de la fenêtre des règles
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
import javax.swing.*;
|
|
||||||
import java.awt.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Title est une étiquette Swing personnalisée utilisée pour afficher un titre centré avec une police et une couleur spécifiées.
|
|
||||||
* Cette classe étend JLabel.
|
|
||||||
* @version 1.0
|
|
||||||
* @author Moncef STITI
|
|
||||||
* @author Marco ORFAO
|
|
||||||
*/
|
|
||||||
public class Title extends JLabel {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructeur de Title.
|
|
||||||
* Crée une étiquette avec le texte, la police et la couleur spécifiés, et la centre horizontalement.
|
|
||||||
* @param text Le texte à afficher.
|
|
||||||
* @param font La police à utiliser pour le texte.
|
|
||||||
* @param color La couleur du texte.
|
|
||||||
*/
|
|
||||||
public Title(String text, Font font, Color color) {
|
|
||||||
super(text, SwingConstants.CENTER); // Centre le texte horizontalement
|
|
||||||
setFont(font); // Définit la police du texte
|
|
||||||
setForeground(color); // Définit la couleur du texte
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
|||||||
import javax.swing.*;
|
|
||||||
import java.awt.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Window est une classe représentant la fenêtre principale de l'application Sudoku.
|
|
||||||
* Cette classe étend JFrame et gère l'affichage des différentes pages de l'application.
|
|
||||||
* @version 1.0
|
|
||||||
* @author Moncef STITI
|
|
||||||
* @author Marco ORFAO
|
|
||||||
*/
|
|
||||||
public class Window extends JFrame {
|
|
||||||
/**
|
|
||||||
* La taille minimale de la fenêtre.
|
|
||||||
*/
|
|
||||||
private static final Dimension MIN_WINDOW_SIZE = new Dimension(850, 700);
|
|
||||||
/**
|
|
||||||
* Le titre du programme.
|
|
||||||
*/
|
|
||||||
private static final String PROGRAM_TITLE = "Sudoku";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* La couleur d'arrière plan par défaut de la fenêtre
|
|
||||||
*/
|
|
||||||
private static final Color BACKGROUND_COLOR = new Color(54, 91, 109);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Le titre de la page actuelle.
|
|
||||||
*/
|
|
||||||
private String PAGE_TITLE = "";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructeur de la classe Window.
|
|
||||||
* Initialise la fenêtre avec le titre du programme, la taille minimale et la couleur de fond.
|
|
||||||
*/
|
|
||||||
public Window() {
|
|
||||||
super(PROGRAM_TITLE);
|
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
||||||
this.setMinimumSize(MIN_WINDOW_SIZE);
|
|
||||||
this.setLocationRelativeTo(null);
|
|
||||||
getContentPane().setBackground(BACKGROUND_COLOR);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Obtient le titre de la page actuelle.
|
|
||||||
* @return Le titre de la page actuelle.
|
|
||||||
*/
|
|
||||||
public String getPageTitle() {
|
|
||||||
return this.PAGE_TITLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Définit le titre de la page actuelle.
|
|
||||||
* Met à jour le titre de la fenêtre pour inclure le titre de la page et le titre du programme.
|
|
||||||
* @param title Le titre de la page actuelle.
|
|
||||||
*/
|
|
||||||
public void setPageTitle(String title) {
|
|
||||||
this.PAGE_TITLE = title;
|
|
||||||
this.setTitle(this.PAGE_TITLE + " - " + Window.PROGRAM_TITLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Supprime tous les composants de la fenêtre.
|
|
||||||
* Utilisé pour effacer le contenu de la fenêtre.
|
|
||||||
* @param window La fenêtre à nettoyer.
|
|
||||||
*/
|
|
||||||
public static void removeAllComponents(Window window) {
|
|
||||||
window.getContentPane().removeAll(); // Supprime tous les composants de la fenêtre
|
|
||||||
window.revalidate(); // Revalide la disposition des composants
|
|
||||||
window.repaint(); // Redessine la fenêtre
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user