102 lines
2.3 KiB
Java
102 lines
2.3 KiB
Java
package fr.iut_fbleau.Avalam;
|
|
|
|
/**
|
|
* La classe <code>Tower</code>
|
|
*
|
|
* 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(Color) utilisé par BoardLoader
|
|
* - constructeur Tower(int, Color) utilisé dans d'autres parties possibles
|
|
* - méthode mergeTower(Tower) utilisée par AvalamBoard
|
|
* - méthode merge(Tower) conservée (si elle est utilisée ailleurs)
|
|
*/
|
|
public class Tower {
|
|
|
|
//Attributs
|
|
|
|
/** Hauteur de la tour (nombre de pions empilés). */
|
|
private int height;
|
|
|
|
/** Couleur du sommet de la tour (propriétaire actuel). */
|
|
private Color color;
|
|
|
|
//Constructeur
|
|
|
|
/**
|
|
* Construit une tour de hauteur 1 avec la couleur donnée.
|
|
* (Constructeur attendu par BoardLoader dans ton projet.)
|
|
*
|
|
* @param color couleur du sommet
|
|
*/
|
|
public Tower(Color color) {
|
|
this(1, color);
|
|
}
|
|
|
|
/**
|
|
* 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 = height;
|
|
this.color = 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 <code>src</code> sur la tour courante (destination).
|
|
* La couleur du sommet devient celle de <code>src</code>.
|
|
*
|
|
* @param src tour source empilée sur la destination
|
|
*/
|
|
public void merge(Tower src) {
|
|
this.height += src.height;
|
|
this.color = src.color;
|
|
}
|
|
|
|
/**
|
|
* Alias de merge() pour compatibilité avec d'autres classes.
|
|
*
|
|
* @param src tour source empilée sur la destination
|
|
*/
|
|
public void mergeTower(Tower src) {
|
|
merge(src);
|
|
}
|
|
|
|
//Affichage
|
|
|
|
/**
|
|
* Représentation textuelle de la tour.
|
|
*
|
|
* @return chaîne représentant la tour
|
|
*/
|
|
@Override
|
|
public String toString() {
|
|
return color + "(" + height + ")";
|
|
}
|
|
}
|