package fr.iut_fbleau.Avalam; /** * La classe Tower * * Représente une tour dans le jeu Avalam. * Une tour est caractérisée par : * - une couleur (couleur du sommet) * - une hauteur (nombre de pions empilés) * * Cette version est volontairement compatible avec le reste du projet : * - constructeur Tower(int, Color) utilisé dans d'autres parties possibles * - usine createTower(Color) utilisé par BoardLoader * - méthode mergeTower(Tower) utilisée par AvalamBoard */ public class Tower { //Attributs /** Hauteur de la tour (nombre de pions empilés). */ private byte height; /** Couleur du sommet de la tour (propriétaire actuel). */ private Color color; //Constructeur /** * Construit une tour avec une hauteur et une couleur données. * * @param height hauteur initiale * @param color couleur du sommet */ public Tower(int height, Color color) { this.height = (byte) height; this.color = color; } /** * Construit une tour de hauteur 1 avec la couleur donnée. * (Constructeur attendu par BoardLoader dans le projet.) * * @param color couleur du sommet */ public static Tower createTower(Color color) { return new Tower(1, color); } //Méthodes /** * Retourne la hauteur de la tour. * * @return hauteur */ public int getHeight() { return height; } /** * Retourne la couleur du sommet. * * @return couleur */ public Color getColor() { return color; } /** * Fusionne la tour src sur la tour courante (destination). * La couleur du sommet devient celle de src. * * @param src tour source empilée sur la destination */ public void mergeTower(Tower src) { this.height += src.height; this.color = src.color; } //Affichage /** * Représentation textuelle de la tour. * * @return chaîne représentant la tour */ @Override public String toString() { return color + "(" + height + ")"; } }