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