93 lines
3.0 KiB
Java
93 lines
3.0 KiB
Java
import java.io.Serializable;
|
|
|
|
/**
|
|
* Représente une case individuelle sur le plateau du Démineur.
|
|
* Elle contient son état (minée, révélée) et son marqueur (étoile, interrogation).
|
|
*/
|
|
public class Case implements Serializable {
|
|
|
|
/** Constante indiquant que la case n'a aucun marqueur. */
|
|
public static final int MARQUEUR_VIDE = 0;
|
|
|
|
/** Constante indiquant que la case est marquée d'une étoile (mine supposée). */
|
|
public static final int MARQUEUR_ETOILE = 1;
|
|
|
|
/** Constante indiquant que la case est marquée d'un point d'interrogation (doute). */
|
|
public static final int MARQUEUR_INTERROGATION = 2;
|
|
|
|
/** Constante définissant le nombre total d'états de marqueurs possibles. */
|
|
private static final int NOMBRE_ETATS_MARQUEUR = 3;
|
|
|
|
/** Indique si la case contient une mine (true) ou non (false). */
|
|
private boolean minee;
|
|
|
|
/** Indique si la case a été cliquée et révélée au joueur. */
|
|
private boolean revelee;
|
|
|
|
/** Stocke l'état actuel du marqueur posé par le joueur (clic droit). */
|
|
private int marqueur;
|
|
|
|
/** Stocke le nombre de mines présentes dans les 8 cases adjacentes. */
|
|
private int nbMinesVoisines;
|
|
|
|
/**
|
|
* Constructeur par défaut d'une Case.
|
|
* Initialise une case vide, cachée et sans marqueur.
|
|
*/
|
|
public Case() {
|
|
this.minee = false;
|
|
this.revelee = false;
|
|
this.marqueur = MARQUEUR_VIDE;
|
|
this.nbMinesVoisines = 0;
|
|
}
|
|
|
|
/**
|
|
* Vérifie si la case contient une mine.
|
|
* @return true si minée, false sinon.
|
|
*/
|
|
public boolean isMinee() { return this.minee; }
|
|
|
|
/**
|
|
* Vérifie si la case est révélée.
|
|
* @return true si révélée, false sinon.
|
|
*/
|
|
public boolean isRevelee() { return this.revelee; }
|
|
|
|
/**
|
|
* Récupère le marqueur actuel de la case.
|
|
* @return l'entier correspondant au type de marqueur.
|
|
*/
|
|
public int getMarqueur() { return this.marqueur; }
|
|
|
|
/**
|
|
* Récupère le nombre de mines autour de cette case.
|
|
* @return le nombre de mines voisines.
|
|
*/
|
|
public int getNbMinesVoisines() { return this.nbMinesVoisines; }
|
|
|
|
/**
|
|
* Définit si la case doit contenir une mine ou non.
|
|
* @param estMinee true pour placer une mine, false pour l'enlever.
|
|
*/
|
|
public void setMinee(boolean estMinee) { this.minee = estMinee; }
|
|
|
|
/**
|
|
* Modifie l'état de révélation de la case.
|
|
* @param estRevelee true pour révéler la case, false pour la cacher.
|
|
*/
|
|
public void setRevelee(boolean estRevelee) { this.revelee = estRevelee; }
|
|
|
|
/**
|
|
* Enregistre le nombre de mines calculé autour de cette case.
|
|
* @param nombre le nombre de mines voisines (de 0 à 8).
|
|
*/
|
|
public void setNbMinesVoisines(int nombre) { this.nbMinesVoisines = nombre; }
|
|
|
|
/**
|
|
* Alterne le marqueur de la case dans l'ordre : Vide -> Étoile -> Interrogation -> Vide.
|
|
*/
|
|
public void changerMarqueur() {
|
|
this.marqueur = (this.marqueur + 1) % NOMBRE_ETATS_MARQUEUR;
|
|
}
|
|
}
|