Files
2026-04-12 16:40:07 +02:00

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;
}
}