javadoc ok

This commit is contained in:
Haïssous Kayyissa 2022-05-25 15:36:29 +02:00
parent f7a76e9bc4
commit c1c703ba3a
12 changed files with 326 additions and 46 deletions

View File

@ -1,15 +1,38 @@
import javax.swing.*;
import java.awt.*;
/**
* La classe <code>Case</code> genère une case de jeu
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Case extends JPanel {
// Definition d'attributs
/**
* grille sur laquelle est la cas
*/
private Grille grille;
/**
* nombre de mines alentours
*/
private int entourage;
/**
* statut si la case est visible ou non
*/
private boolean visible;
/**
* si la case est minée ou non
*/
private boolean minee;
/**
* si la case est marquée par l'utilisateur ou non
*/
private boolean reperee;
// Définition du constructeur
/**
* Définition du constructeur qui genère une case
* @param grille grille de jeu
* @param caseSize taille d'une case
*/
public Case(Grille grille, Dimension caseSize) {
super();
// Initialisation des attributs
@ -27,7 +50,9 @@ public class Case extends JPanel {
this.setBackground(new Color(70, 70, 70));
}
// Méthode qui permet de montrer la case, et fait perdre si elle est minée
/**
* 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){
@ -66,37 +91,58 @@ public class Case extends JPanel {
}
}
// Méthode permettant de dire si la case est cachée ou visible
/**
* Méthode permettant de dire si la case est cachée ou visible
* @return this.visible
*/
public boolean getVisible(){
return this.visible;
}
// Méthode pour déclarer la présence d'une mine sur une case
/**
* Méthode pour déclarer la présence d'une mine sur une case
*/
public void setMine(){
this.minee=true;
}
// Permet de dire si une case est minée
/**
* Permet de dire si une case est minée
* @return this.minee
*/
public boolean getMine(){
return this.minee;
}
// Défini combien de mines entourent la case
/**
*Défini combien de mines entourent la case
* @param entourage mines autour de la case
*/
public void setEntourage(int entourage){
this.entourage=entourage;
}
// Renvoi l'entourage de la case
/**
*Renvoie l'entourage de la case
* @return this.entourage
*/
public int getEntourage(){
return this.entourage;
}
// Permet d'acceder à la grille sur laquelle est la case
/**
* Permet d'acceder à la grille sur laquelle est la case
* @return this.grille
*/
public Grille getGrille(){
return this.grille;
}
// Méthode pour savoir si le joueur pense que la case est minée
/**
* Méthode pour savoir si le joueur pense que la case est minée
* @param reperee si la case est marquée ou non
* @param marquage quel est le marquage sur la case (0 si aucun)
*/
public void setReperee(boolean reperee, int marquage){
this.reperee=reperee;
if (marquage==1){
@ -108,12 +154,17 @@ public class Case extends JPanel {
this.grille.MinesLeft();
}
// Methode pour dire si la case est marquée ou non
/**
* Methode pour dire si la case est marquée ou non
* @return this.reperee
*/
public boolean getReperee(){
return this.reperee;
}
// Methode pour montrer que la partie est gagnée
/**
* Methode pour montrer que la partie est gagnée
*/
public void setVictoire(){
this.grille.setEnJeu(false);
if (this.minee==true){
@ -123,11 +174,17 @@ public class Case extends JPanel {
}
}
// Methode pour savoir dans le Listener si la partie est finie ou non
/**
* Methode pour savoir si la partie est finie ou non
* @return this.grille.getEnJeu()
*/
public boolean getEnJeu(){
return this.grille.getEnJeu();
}
/**
* redéfinition du toString pour sauvegarder les cases
*/
@Override
public String toString(){
int value=0;

View File

@ -1,12 +1,29 @@
import javax.swing.JComponent;
import java.awt.*;
/**
* La classe <code>Doute</code> hérite de JComponent
* Création d'un point d'interrogation, qui sert pour le marquage des cases
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Doute extends JComponent {
/**
* taille d'une case
*/
private Dimension caseSize;
/**
* Constructeur qui ne sert qu'à la création de la constante caseSize
* @param caseSize la taille d'une case
*/
public Doute(Dimension caseSize) {
super();
this.caseSize=caseSize;
}
/**
* Méthode de JComponent réécrite pour afficher une étoile
* @param pinceau pinceau pour dessiner le JComponent
*/
@Override
protected void paintComponent(Graphics pinceau) {
Graphics chiffre = pinceau.create();

View File

@ -1,14 +1,36 @@
import javax.swing.JComponent;
import java.awt.*;
/**
* La classe <code>Entourage</code> hérite de JComponent
* Elle permet de recharger la case cliquée avec les modifications apportées par l'utilisateur
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Entourage extends JComponent {
/**
* nombre de mines autour de la case
*/
private int entourage;
/**
* taille d'une case
*/
private Dimension caseSize;
/**
* Constructeur qui ne sert qu'à la création des constantes
* @param entourage le nombre de mines à afficher
* @param caseSize la taille d'une case
*/
public Entourage(int entourage, Dimension caseSize) {
super();
this.entourage = entourage;
this.caseSize=caseSize;
}
/**
* Méthode de JComponent réécrite pour afficher le nombre de mines
* @param pinceau pinceau pour dessiner le JComponent
*/
@Override
protected void paintComponent(Graphics pinceau) {
Graphics chiffre = pinceau.create();

View File

@ -1,16 +1,36 @@
import javax.swing.JComponent;
import java.awt.*;
// Création d'un Jcomponent Etoile, qui sert pour le marquage des mines
/**
* La classe <code>Etoile</code> hérite de JComponent
* Création d'une Etoile, qui sert pour le marquage des cases
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Etoile extends JComponent {
/**
*Image de l'étoile à dessiner
*/
private Image etoileImage;
/**
* taille d'une case
*/
private Dimension caseSize;
/**
* Constructeur qui sert à la création de la constante caseSize et récupère l'image
* @param caseSize la taille d'une case
*/
public Etoile(Dimension caseSize) {
super();
this.caseSize=caseSize;
this.etoileImage = Toolkit.getDefaultToolkit().getImage("etoile.png");
}
/**
* Méthode de JComponent réécrite pour afficher une étoile
* @param pinceau pinceau pour dessiner le JComponent
*/
@Override
protected void paintComponent(Graphics pinceau) {
Graphics etoile = pinceau.create();

View File

@ -2,20 +2,62 @@ import javax.swing.*;
import java.awt.*;
import java.util.Random;
import java.util.Arrays;
/**
* La classe <code>Grille</code> correspond à une grille de jeu
* elle genère un tableau de case et une Bannière
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Grille extends JPanel{
/**
* Banniere
*/
private Banniere banniere;
/**
* Dimension de la grille
*/
private Dimension grilleSize=new Dimension(0,0);
/**
* tableau des cases de la partie
*/
private Case[] plateau;
/**
* nombre de colonnes
*/
private int colonnes;
/**
* nombre de lignes
*/
private int lignes;
/**
* nombre de cases
*/
private int taille;
/**
* nombre de mines
*/
private int mines;
/**
* nombre de mines restantes à trouver
*/
private int minesLeft;
/**
* statut si la partie est en cours ou non
*/
private boolean enJeu;
/**
* fenetre de Jeu
*/
private FrameJeu fenetre;
// Définition du constructeur qui correspond à une nouvelle grille de jeu
/**
* Définition du constructeur qui correspond à une nouvelle grille de jeu
* @param lignes nombre de lignes
* @param colonnes nombre de colonnes
* @param mines nombre de mines
* @param fenetre fenetre de Jeu
* @param menu fenetre du menu rattaché
*/
public Grille(int lignes, int colonnes, int mines, FrameJeu fenetre, FrameMenu menu){
super();
this.colonnes=colonnes;
@ -77,6 +119,15 @@ public class Grille extends JPanel{
}
/**
* Définition du constructeur qui correspond au chargement d'une grille sauvegardé
* @param lignes nombre de lignes
* @param colonnes nombre de colonnes
* @param donnees sauvegarde
* @param mines nombre de mines
* @param fenetre fenetre de Jeu
* @param menu fenetre du menu rattaché
*/
public Grille (int lignes,int colonnes,SaveManager.SaveData donnees,int mines,FrameJeu fenetre, FrameMenu menu){
super();
this.colonnes=colonnes;
@ -137,7 +188,10 @@ public class Grille extends JPanel{
this.banniere.setMinesLeft(this.minesLeft);
}
// Méthode pour Génerer le plateau
/**
*Méthode pour Génerer le plateau
* @param caseSize taille d'une case
*/
protected void GenererPlateau(Dimension caseSize){
this.plateau= new Case[this.taille];
for (int i=0;i<this.taille;i++){
@ -145,14 +199,19 @@ public class Grille extends JPanel{
}
}
// Méthode pour Afficher le plateau
/**
*Méthode pour Afficher le plateau
*/
protected void AfficherPlateau(){
for (int i=0;i<this.taille;i++){
this.add(this.plateau[i]);
}
}
// Méthode pour établir le nombre de mines autour de chaque case
/**
*Méthode pour établir le nombre de mines autour de chaque case
* @param caseMine tableau des cases minées
*/
protected void SetEntourage(int[] caseMine){
// On cherche à connaître le nombre de mines autour de chaque case
for (int i=0;i<taille;i++){
@ -226,12 +285,18 @@ public class Grille extends JPanel{
}
}
// Méthode pour obtenir la taille de la grille de jeu
/**
* Méthode pour obtenir la taille de la grille de jeu
* @return grilleSize
*/
public Dimension getGrilleSize(){
return grilleSize;
}
// Méthode pour déterminer le nombre de mines restantes
/**
*Méthode déterminant le nombre de mines restantes
*/
public void MinesLeft(){
this.minesLeft=this.mines;
for (int i=0;i<this.taille;i++){
@ -242,7 +307,9 @@ public class Grille extends JPanel{
this.banniere.setMinesLeft(this.minesLeft);
}
// Méthode déterminant les conditions de victoire
/**
*Méthode déterminant les conditions de victoire
*/
public void verifVictoire(){
// Compte le nombre de cases visibles
int casesVisibles=0;
@ -260,7 +327,9 @@ public class Grille extends JPanel{
}
}
// Méthode montrer la défaite
/**
*Méthode pour montrer la défaite
*/
public void Defaite(){
// Montre toutes les cases du plateau
for (int i=0;i<this.taille;i++){
@ -269,23 +338,35 @@ public class Grille extends JPanel{
this.banniere.setDefaite();
}
// Methode pour récupérer le plateau de jeu
/**
* Methode pour récupérer le plateau de jeu
* @return copie du tableau de cases
*/
public Case[] getPlateau(){
return Arrays.copyOf(this.plateau,this.taille);
}
// Méthode pour récupérer la taille de la grille
/**
*Méthode pour récupérer la taille de la grille
* @return la taille de la grille
*/
public Dimension getDimensionGrille(){
Dimension grilleSize= new Dimension(this.colonnes, this.lignes);
return grilleSize;
}
// Méthode pour savoir combien de mines sont dans la grille
/**
*Méthode pour savoir combien de mines sont dans la grille
* @return this.mines le nombre de mines
*/
public int getMines(){
return this.mines;
}
// Méthode pour rendre visibles les cases autour d'un 0
/**
*Méthode pour rendre visibles les cases autour d'un 0
* @param panel case autour de laquelle il faut révéler les cases
*/
public void setEntourageVisible(Case panel){
for(int i=0; i<this.taille;i++){
if (plateau[i]==panel){
@ -341,15 +422,26 @@ public class Grille extends JPanel{
}
}
// Méthode qui renvoie la banniere d'état de la partie
/**
*Méthode qui renvoie la banniere d'état de la partie
* @return this.banniere
*/
public Banniere getBanniere(){
return this.banniere;
}
// Méthode qui défini si la partie est en cours ou non
/**
*Méthode qui défini si la partie est en cours ou non
* @param enJeu statut de la partie
*/
public void setEnJeu(boolean enJeu){
this.enJeu=enJeu;
}
// Méthode qui renvoie si la partie est en cours ou non
/**
*Méthode qui renvoie si la partie est en cours ou non
* @return statut enjeu
*/
public boolean getEnJeu(){
return this.enJeu;
}

View File

@ -1,10 +1,22 @@
import java.awt.event.*;
/**
* La classe <code>ListenerCase</code> implémente l'interface MouseListener
* Elle permet de recharger la case cliquée avec les modifications apportées par l'utilisateur
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class ListenerCase implements MouseListener {
/**
* nombre représentant le marquage sur la case
*/
private int marquage = 0;
@Override
// Méthode qui va servir à détecter le click de la souris
/**
* Méthode à écrire qui réagit au click de la souris
* @param evenement L'évenement de la souris
*/
public void mouseClicked(MouseEvent evenement) {
Case panel = (Case) evenement.getSource();
if (panel.getEnJeu()) {
@ -38,16 +50,28 @@ public class ListenerCase implements MouseListener {
}
}
// Les autres méthodes de l'interface n'interviennent pas
/**
* Méthode à écrire qui n'intervient pas
* @param evenement L'évenement de la souris
*/
public void mouseEntered(MouseEvent evenement) {
}
/**
* Méthode à écrire qui n'intervient pas
* @param evenement L'évenement de la souris
*/
public void mouseExited(MouseEvent evenement) {
}
/**
* Méthode à écrire qui n'intervient pas
* @param evenement L'évenement de la souris
*/
public void mousePressed(MouseEvent evenement) {
}
/**
* Méthode à écrire qui n'intervient pas
* @param evenement L'évenement de la souris
*/
public void mouseReleased(MouseEvent evenement) {
}

View File

@ -6,6 +6,7 @@
public class Main{
/**
* main ouvrant la fenêtre de menu
* @param args arguments au lancement du programme
*/
public static void main(String[] args) {
new FrameMenu();

View File

@ -20,15 +20,18 @@ SettingsListener.class : SettingsListener.java
NewGameListener.class : NewGameListener.java FrameJeu.class
${JC} ${JCFLAGS} NewGameListener.java
Chargement.class : Chargement.java FrameJeu.class
Chargement.class : Chargement.java FrameJeu.class SaveManager.class
${JC} ${JCFLAGS} Chargement.java
FrameJeu.class : FrameJeu.java Grille.class
FrameJeu.class : FrameJeu.java Grille.class SaveAndCloseListener.class
${JC} ${JCFLAGS} FrameJeu.java
Grille.class : Grille.java Banniere.class Case.class
${JC} ${JCFLAGS} Grille.java
SaveAndCloseListener.class : SaveAndCloseListener.java SaveManager.class
${JC} ${JCFLAGS} SaveAndCloseListener.java
Banniere.class : Banniere.java MenuListener.class SaveListener.class
${JC} ${JCFLAGS} Banniere.java

View File

@ -1,2 +1,2 @@
25x20x50
44244410444434444444444444414444144444444444444444441444424444444334444114444444443444444444444400444444444444444444444441010444444444444444444410000044444444444444444100001004444444410104100101001010444444440044444444444000044444444004444444444400004444444101444444444441000014444444444414444444000000444444444440444444401001044444444444044444100000000144444441000144401000000000144410000100010000000000004440100000100100000100001001000000000000000000000001000000000000000010000100000000100100000010
00000000000000000100103440000000000000011444434444000000000010004444444444400100000010001444444444440000000000104444444444444000000100001444444444444401100000000144443344444444441001000001444444444444344440444100144444430011044444344444444444444100014444444444444444444440000444444444444444444444000044444444444444444434011004444444444444444444010100444443444444444443000001044444444444444300000000004444444444444300000000000444443444444410010000000043444444444441000000000004434444444301000100100000

View File

@ -1,14 +1,36 @@
import java.awt.event.*;
/**
* La classe <code>SaveAndCloseListener</code> implémente WindowListener
* elle genère un tableau de case et une Bannière
* @version 1.1
* @author Kayyissa Haïssous
*/
public class SaveAndCloseListener implements WindowListener {
/**
*grille de jeu
*/
private Grille grille;
/**
* Constructeur qui ne sert qu'à la création de la constante grille
* @param grille la grille de Jeu
*/
public SaveAndCloseListener(Grille grille) {
this.grille=grille;
}
/**
* Méthode à écrire qui n'intervient pas
* @param e L'évenement sur la fenêtre
*/
@Override
public void windowOpened(WindowEvent e) {
}
/**
* Méthode à écrire qui sert à sauvegarder la partie à la fermeture de la fenêtre
* @param e L'évenement sur la fenêtre
*/
@Override
public void windowClosing(WindowEvent e) {
SaveManager saveManager = new SaveManager();
@ -16,22 +38,42 @@ public class SaveAndCloseListener implements WindowListener{
}
/**
* Méthode à écrire qui n'intervient pas
* @param e L'évenement sur la fenêtre
*/
@Override
public void windowClosed(WindowEvent e) {
}
/**
* Méthode à écrire qui n'intervient pas
* @param e L'évenement sur la fenêtre
*/
@Override
public void windowIconified(WindowEvent e) {
}
/**
* Méthode à écrire qui n'intervient pas
* @param e L'évenement sur la fenêtre
*/
@Override
public void windowDeiconified(WindowEvent e) {
}
/**
* Méthode à écrire qui n'intervient pas
* @param e L'évenement sur la fenêtre
*/
@Override
public void windowActivated(WindowEvent e) {
}
/**
* Méthode à écrire qui n'intervient pas
* @param e L'évenement sur la fenêtre
*/
@Override
public void windowDeactivated(WindowEvent e) {
}

View File

@ -36,7 +36,8 @@ public class SaveManager {
/**
* Méthode qui charge les infos de sauvegarde
* @param nomFicher le nom du fichier de save
* @param nomFichier le nom du fichier de save
* @return sauvegarde
*/
public SaveData load(String nomFichier) {
String toReturn="";

1
package-list Normal file
View File

@ -0,0 +1 @@