début documentation

This commit is contained in:
Haïssous Kayyissa 2022-05-25 10:42:04 +02:00
parent 81b6d2f709
commit d97e1c8f5c
14 changed files with 280 additions and 56 deletions

View File

@ -1,12 +1,37 @@
import javax.swing.*;
import java.awt.*;
/**
* La classe <code>Banniere</code> affiche l'état de la partie,
* gère la sauvegarde la victoire et la défaite
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Banniere extends JPanel {
/**
* fenetre de Jeu
*/
private FrameJeu fenetre;
/**
* fenetre du menu lié
*/
private FrameMenu menu;
/**
* Bouton qui permet de sauver et quitter
*/
private JButton save;
/**
* le JLabel qui affiche le nombre de mines restantes
*/
private JLabel mines;
// Définition du constructeur
/**
* Constructeur qui sert à la création de la bannière et l'ajout du bouton sauver et quitter
* @param mines le nombre de mines dans la partie
* @param fenetre la fenêtre de jeu
* @param menu la fenêtre de menu rattachée
* @param grille la grille de jeu
*/
public Banniere(int mines, FrameJeu fenetre, FrameMenu menu, Grille grille) {
super();
this.fenetre=fenetre;
@ -18,7 +43,6 @@ public class Banniere extends JPanel {
this.setLayout(new BorderLayout());
// Compteur de mines restantes
this.mines= new JLabel();
this.add(this.mines, BorderLayout.NORTH);
@ -28,13 +52,18 @@ public class Banniere extends JPanel {
this.add(this.save, BorderLayout.EAST);
}
// Méthode pour afficher le nombre de mines restantes
/**
* Méthode pour afficher le nombre de mines restantes
* @param minesLeft le nombre de mines restantes
*/
public void setMinesLeft(int minesLeft) {
this.mines.setText("Mines restantes : "+Integer.toString(minesLeft));
this.repaint();
}
// Méthode pour indiquer au joueur sa Victoire
/**
* Méthode pour indiquer au joueur sa Victoire
*/
public void setVictoire() {
remove(this.save);
JLabel victoire = new JLabel("Victoire ! Retour au menu...");
@ -46,7 +75,9 @@ public class Banniere extends JPanel {
timerMenu.start();
}
// Méthode pour indiquer au joueur sa Défaite
/**
* Méthode pour indiquer au joueur sa Défaite
*/
public void setDefaite() {
remove(this.save);
JLabel defaite = new JLabel("Défaite ! Retour au menu...");

View File

@ -29,7 +29,6 @@ public class Case extends JPanel {
// Méthode qui permet de montrer la case, et fait perdre si elle est minée
public void setVisible(){
// On vérfie que la case n'est pas déjà visible
if (!this.visible){
this.visible = true;

View File

@ -1,10 +1,29 @@
import java.awt.event.*;
/**
* La classe <code>Chargement</code> implémente l'interface ActionListener
* elle permet de lancer le chargement d'une partie sauvegardée
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Chargement implements ActionListener {
/**
* Fenetre du menu.
*/
private FrameMenu menu;
/**
* Constructeur qui ne sert qu'à la création de la constante menu
* @param menu la fenêtre de menu
*/
public Chargement(FrameMenu menu){
this.menu=menu;
}
/**
* Méthode qui doit être rédigée
* @param e l'évenement sur le bouton
*/
@Override
public void actionPerformed(ActionEvent e) {
this.menu.setVisible(false);

View File

@ -1,10 +1,25 @@
import javax.swing.*;
import java.awt.*;
// Cette classe à pour but d'afficher un menu et de réagir aux directives de l'utilisateur (lancer le jeu, le quitter...)
/**
* La classe <code>FrameJeu</code> génère une grille de jeu
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class FrameJeu extends JFrame{
/**
* grille de jeu
*/
private Grille grille;
/**
* Constructeur qui sert à géréner une nouvelle grille
* @param lignes le nombre de lignes
* @param colonnes le nombre de colonnes
* @param mines le nombre de mines
* @param menu la fenêtre du menu rattaché à la partie
*/
public FrameJeu(int lignes, int colonnes, int mines, FrameMenu menu) {
super();
// Création d'une grille pour une nouvelle partie
@ -13,13 +28,24 @@ public class FrameJeu extends JFrame{
}
// Génération d'une grille à partir de la sauvegarde
/**
* Constructeur qui sert à charger la grille d'une ancienne partie
* @param lignes le nombre de lignes
* @param colonnes le nombre de colonnes
* @param donnees la sauvegarde
* @param mines le nombre de mines
* @param menu la fenêtre du menu rattaché à la partie
*/
public FrameJeu (int lignes, int colonnes, SaveManager.SaveData donnees, int mines, FrameMenu menu){
super();
// Génération d'une grille à partir de la sauvegarde
this.grille=new Grille(lignes,colonnes,donnees,mines,this, menu);
MiseEnPage();
}
/**
* Méthode qui sert à créer la fenêtre avec ses élements
*/
public void MiseEnPage(){
// On récupère les dimensions de l'écran pour adapter la taille par défaut de notre fenêtre

View File

@ -2,20 +2,57 @@ import javax.swing.*;
import java.awt.event.*;
import java.io.File;
import java.awt.*;
// Cette classe à pour but d'afficher un menu et de réagir aux directives de l'utilisateur (lancer le jeu, le quitter...)
/**
* La classe <code>FrameMenu</code> correspond à une fenêtre de menu,
* elle l'affiche et régit aux directives de l'utilisateur (Jouer, Charger, Quitter)
* @version 1.1
* @author Kayyissa Haïssous
*/
public class FrameMenu extends JFrame{
/**
* Nombre de lignes pour la partie à lancer
*/
private int lignes;
/**
* Nombre de colonnes pour la partie à lancer
*/
private int colonnes;
/**
* Nombre de mines pour la partie à lancer
*/
private int mines;
/**
* JSlider qui permet de choisir le nombre de lignes
*/
private JSlider sliderLignes;
/**
* JSlider qui permet de choisir le nombre de colonnes
*/
private JSlider sliderColonnes;
/**
* JSlider qui permet de choisir le nombre de mines
*/
private JSlider sliderMines;
/**
* JLabel qui permet d'afficher en temps réel le nombre de lignes
*/
private JLabel showLines;
/**
* JLabel qui permet d'afficher en temps réel le nombre de colonnes
*/
private JLabel showColumns;
/**
* JLabel qui permet d'afficher en temps réel le nombre de mines
*/
private JLabel showMines;
/**
* JButton pour charger une éventuelle sauvegarde
*/
private JButton charger;
/**
* Constructeur destiné à la création et l'affichage de la fenêtre de menu
*/
public FrameMenu() {
super();
@ -37,7 +74,7 @@ public class FrameMenu extends JFrame{
titre.setBounds((frameSize.width/3), frameSize.height/15,frameSize.width/2,frameSize.height*2/15);
this.add(titre);
// On créer les sliders et les JLabel qui afficheront leur valeur
// On créer les Jsliders et les JLabel qui afficheront leur valeur
this.sliderLignes = new JSlider(4,30,20);
this.sliderColonnes = new JSlider(4,30,25);
this.sliderMines = new JSlider(1,900, 50);
@ -70,6 +107,7 @@ public class FrameMenu extends JFrame{
this.add(showColumns);
this.add(showMines);
// On créer les boutons Jouer, quitter et si une save existe, charger
JButton newGame = new JButton("Jouer");
newGame.addActionListener(new NewGameListener(this));
@ -77,7 +115,7 @@ public class FrameMenu extends JFrame{
this.add(newGame);
JButton exit = new JButton("Quitter");
exit.addActionListener(new ActionListener(){
exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
@ -98,8 +136,12 @@ public class FrameMenu extends JFrame{
this.setVisible(true);
}
// Méthode pour récupérer les valeurs des paramètres et les afficher à l'écran
public void setSettings(int settingToSet, int settingValue){
/**
* Méthode pour récupérer les valeurs des paramètres et les afficher à l'écran
* @param settingToSet Le paramètre qui doit être changé
* @param settingValue La nouvelle valeur à donner au paramètre
*/
public void setSettings(int settingToSet, int settingValue) {
if (settingToSet==0){
this.lignes=settingValue;
showLines.setText("Lignes : "+settingValue);
@ -113,8 +155,11 @@ public class FrameMenu extends JFrame{
this.sliderMines.setMaximum(this.colonnes*this.lignes);
}
// Methode pour connaître les paramètres de la partie
public int[] getSettings(){
/**
* Renvoie les valeurs des paramètres
* @return les paramètres pour une nouvelle partie
*/
public int[] getSettings() {
int[] settings = new int[3];
settings[0]=this.lignes;
settings[1]=this.colonnes;
@ -122,8 +167,10 @@ public class FrameMenu extends JFrame{
return settings;
}
// Methode pour supprimer le bouton charger après un chargement
public void deleteCharger(){
/**
* Méthode pour supprimer le bouton charger après avoir chargé une partie
*/
public void deleteCharger() {
this.remove(this.charger);
}
}

View File

@ -15,8 +15,6 @@ public class Grille extends JPanel{
private boolean enJeu;
private FrameJeu fenetre;
// TODO : Recréer un tableau avec les cases minees
// Définition du constructeur qui correspond à une nouvelle grille de jeu
public Grille(int lignes, int colonnes, int mines, FrameJeu fenetre, FrameMenu menu){
super();
@ -85,7 +83,6 @@ public class Grille extends JPanel{
this.lignes=lignes;
this.taille=lignes*colonnes;
this.minesLeft=mines;
this.mines=mines;
this.enJeu=true;
this.fenetre=fenetre;
@ -102,34 +99,39 @@ public class Grille extends JPanel{
// On initialise un plateau de cases
GenererPlateau(caseSize);
// On prépare un tableau pour y placer les cases minées
// On créer un tableau pour y placer les cases minées
int[] caseMine = new int[mines];
// On lit maintenant les données pour fixer certains de leurs attributs
int j=0;
// On lit maintenant les données pour fixer certains attributs et savoir sont les mines
for (int i=0;i<=taille-1;i++){
System.out.println(donnees.cases.substring(i,i+1));
if (Integer.parseInt(donnees.cases.substring(i,i+1))==1){
plateau[i].setMine();
caseMine[j]=i;
System.out.println(caseMine[j]);
j++;
} else if (Integer.parseInt(donnees.cases.substring(i,i+1))==2){
plateau[i].setReperee(true);
} else if (Integer.parseInt(donnees.cases.substring(i,i+1))==3){
plateau[i].setMine();
caseMine[j]=i;
System.out.println(caseMine[j]);
j++;
plateau[i].setReperee(true);
} else if (Integer.parseInt(donnees.cases.substring(i,i+1))==4){
plateau[i].setVisible();
}
}
// On détermine l'entourage de chaque case
SetEntourage(caseMine);
// On affiche les cases qui doivent être visibles
for (int n=0;n<=taille-1;n++){
if (Integer.parseInt(donnees.cases.substring(n,n+1))==4){
plateau[n].setVisible();
}
}
// On affiche la grille
AfficherPlateau();
}
@ -138,18 +140,6 @@ public class Grille extends JPanel{
// Méthode pour Génerer le plateau
protected void GenererPlateau(Dimension caseSize){
this.plateau= new Case[this.taille];
@ -236,6 +226,7 @@ public class Grille extends JPanel{
}
}
plateau[i].setEntourage(entourage);
System.out.println(entourage);
}
}

View File

@ -1,4 +1,12 @@
/**
* La classe <code>Main</code> est le main qui débute le programme du démineur
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Main{
/**
* main ouvrant la fenêtre de menu
*/
public static void main(String[] args) {
new FrameMenu();
}

View File

@ -11,7 +11,7 @@ JVMFLAGS =
Main.class : Main.java FrameMenu.class
${JC} ${JCFLAGS} Main.java
FrameMenu.class : FrameMenu.java SettingsListener.class NewGameListener.class
FrameMenu.class : FrameMenu.java SettingsListener.class NewGameListener.class Chargement.class
${JC} ${JCFLAGS} FrameMenu.java
SettingsListener.class : SettingsListener.java
@ -20,31 +20,40 @@ SettingsListener.class : SettingsListener.java
NewGameListener.class : NewGameListener.java FrameJeu.class
${JC} ${JCFLAGS} NewGameListener.java
Chargement.class : Chargement.java FrameJeu.class
${JC} ${JCFLAGS} Chargement.java
FrameJeu.class : FrameJeu.java Grille.class
${JC} ${JCFLAGS} FrameJeu.java
Grille.class : Grille.java Banniere.class Case.class
.Grille.class : Grille.java Banniere.class Case.class
${JC} ${JCFLAGS} Grille.java
Banniere.class : Banniere.java MenuListener.class
Banniere.class : Banniere.java MenuListener.class SaveListener.class
${JC} ${JCFLAGS} Banniere.java
Case.class : Case.java ListenerCase.class Entourage.class
.Case.class : Case.java ListenerCase.class Entourage.class
${JC} ${JCFLAGS} Case.java
MenuListener.class : MenuListener.java
${JC} ${JCFLAGS} MenuListener.java
ListenerCase.class : ListenerCase.java Etoile.class Doute.class
SaveListener.class : SaveListener.java SaveManager.class
${JC} ${JCFLAGS} SaveListener.java
SaveManager.class : SaveManager.java
${JC} ${JCFLAGS} SaveManager.java
.ListenerCase.class : ListenerCase.java Etoile.class Doute.class
${JC} ${JCFLAGS} ListenerCase.java
Entourage.class : Entourage.java
.Entourage.class : Entourage.java
${JC} ${JCFLAGS} Entourage.java
Etoile.class : Etoile.java
.Etoile.class : Etoile.java
${JC} ${JCFLAGS} Etoile.java
Doute.class : Doute.java
.Doute.class : Doute.java
${JC} ${JCFLAGS} Doute.java

View File

@ -1,12 +1,35 @@
import java.awt.event.*;
/**
* La classe <code>MenuListener</code> implémente l'interface ActionListener
* ferme le jeu et réouvre la fenêtre de menu
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class MenuListener implements ActionListener{
/**
* fenetre de Jeu
*/
private FrameJeu fenetre;
/**
* fenetre de Menu
*/
private FrameMenu menu;
/**
* Constructeur qui ne sert qu'à la création de constantes
* @param fenetre la fenêtre de jeu
* @param menu la fenêtre de menu
*/
public MenuListener(FrameJeu fenetre, FrameMenu menu){
this.fenetre=fenetre;
this.menu=menu;
}
/**
* Méthode qui doit être rédigée
* @param event l'évenement
*/
@Override
public void actionPerformed(ActionEvent event){
this.menu.setVisible(true);

View File

@ -1,10 +1,29 @@
import java.awt.event.*;
/**
* La classe <code>NewGameListener</code> implémente l'interface ActionListener
* et permet de lancer une nouvelle partie.
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class NewGameListener implements ActionListener{
/**
* Fenetre du menu.
*/
private FrameMenu menu;
/**
* Constructeur qui ne sert qu'à la création de la constante menu
* @param menu la fenêtre de menu
*/
public NewGameListener(FrameMenu menu){
this.menu=menu;
}
/**
* Méthode qui doit être rédigée
* @param event l'évenement sur le bouton
*/
@Override
public void actionPerformed(ActionEvent event){
int[] settings =this.menu.getSettings();

View File

@ -1,2 +1,2 @@
25x20x50
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
11x8x0
4444444444444444444444444444444304444444310044444444000444444441004444444410044444444000

View File

@ -1,12 +1,35 @@
import java.awt.event.*;
/**
* La classe <code>MenuListener</code> implémente l'interface ActionListener
* ferme le jeu et sauvegarde la partie en cours dans le fichier Save.txt
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class SaveListener implements ActionListener {
/**
* Grille de Jeu
*/
private Grille grille;
/**
* fenetre de Jeu
*/
private FrameJeu fenetre;
/**
* Constructeur qui ne sert qu'à la création de constantes
* @param grille la grille de Jeu
* @param fenetre la fenêtre de jeu
*/
public SaveListener(Grille grille, FrameJeu fenetre){
this.grille=grille;
this.fenetre=fenetre;
}
/**
* Méthode qui doit être rédigée
* @param event l'évenement sur le Bouton
*/
@Override
public void actionPerformed(ActionEvent event){
SaveManager saveManager = new SaveManager();

View File

@ -1,8 +1,19 @@
import java.awt.Dimension;
import java.io.*;
/**
* La classe <code>SaveManager</code> sert à sauvegarder la partie en cours
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class SaveManager {
/**
* Méthode pour récupérer les infos et les écrires dans le fichier voulu
* @param grille la grille de jeu
* @param nomFichier le nom du fichier de sauvegarde
*/
public void save(Grille grille, String nomFichier) {
Dimension taille = grille.getDimensionGrille();
@ -23,6 +34,10 @@ public class SaveManager {
}
}
/**
* Méthode qui charge les infos de sauvegarde
* @param nomFicher le nom du fichier de save
*/
public SaveData load(String nomFichier) {
String toReturn="";
String ligne;
@ -61,6 +76,9 @@ public class SaveManager {
return toRet;
}
/**
* La classe <code>SaveDate</code> correspond aux données de sauvegarde d'une partie
*/
public class SaveData{
public Dimension taille;
public String cases;

View File

@ -2,6 +2,13 @@ import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* La classe <code>SettingsListener</code> implémente l'interface ChangeListener
* et permet de connaître la valeur des paramètres
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class SettingsListener implements ChangeListener{
private int settingToSet;
private int settingValue;
@ -11,6 +18,10 @@ public class SettingsListener implements ChangeListener{
this.menu=menu;
}
/**
* Méthode qui doit être rédigée
* @param evenement l'évenement sur le JSlider
*/
@Override
public void stateChanged(ChangeEvent evenement) {
JSlider slider = (JSlider) evenement.getSource();