package fr.iut_fbleau.Avalam; import fr.iut_fbleau.GameAPI.AbstractPly; import fr.iut_fbleau.GameAPI.Player; /** * Représente un coup dans le jeu Avalam. * Un coup consiste à déplacer une tour de la position (xFrom, yFrom) * vers la position (xTo, yTo). * * @author AMARY Aurelien, DICK Adrien, FELIX-VIMALARATNAM Patrick, RABAN Hugo * @version 1.0 */ public class AvalamPly extends AbstractPly { /** Coordonnée X de la case source */ private int xFrom; /** Coordonnée Y de la case source */ private int yFrom; /** Coordonnée X de la case destination */ private int xTo; /** Coordonnée Y de la case destination */ private int yTo; /** Hauteur de la tour source (utilisée pour l'annulation de coup) */ private int sourceHeight; /** * Constructeur par défaut d'un coup Avalam. * La hauteur de la source sera définie automatiquement lors de l'application du coup. * * @param joueur Le joueur qui effectue le coup * @param xFrom Coordonnée X de la case source * @param yFrom Coordonnée Y de la case source * @param xTo Coordonnée X de la case destination * @param yTo Coordonnée Y de la case destination */ public AvalamPly(Player joueur, int xFrom, int yFrom, int xTo, int yTo) { super(joueur); this.xFrom = xFrom; this.yFrom = yFrom; this.xTo = xTo; this.yTo = yTo; this.sourceHeight = -1; // Sera défini lors du doPly } /** * Constructeur avec hauteur de la source spécifiée. * Utilisé principalement pour l'annulation de coups. * * @param joueur Le joueur qui effectue le coup * @param xFrom Coordonnée X de la case source * @param yFrom Coordonnée Y de la case source * @param xTo Coordonnée X de la case destination * @param yTo Coordonnée Y de la case destination * @param sourceHeight Hauteur de la tour source avant le déplacement */ public AvalamPly(Player joueur, int xFrom, int yFrom, int xTo, int yTo, int sourceHeight) { super(joueur); this.xFrom = xFrom; this.yFrom = yFrom; this.xTo = xTo; this.yTo = yTo; this.sourceHeight = sourceHeight; } /** * Retourne la coordonnée X de la case source. * * @return La coordonnée X de la case source */ public int getXFrom() { return xFrom; } /** * Retourne la coordonnée Y de la case source. * * @return La coordonnée Y de la case source */ public int getYFrom() { return yFrom; } /** * Retourne la coordonnée X de la case destination. * * @return La coordonnée X de la case destination */ public int getXTo() { return xTo; } /** * Retourne la coordonnée Y de la case destination. * * @return La coordonnée Y de la case destination */ public int getYTo() { return yTo; } /** * Retourne la hauteur de la tour source. * * @return La hauteur de la tour source, ou -1 si non définie */ public int getSourceHeight() { return sourceHeight; } /** * Définit la hauteur de la tour source. * Cette méthode est appelée automatiquement lors de l'application du coup. * * @param height La hauteur de la tour source */ public void setSourceHeight(int height) { this.sourceHeight = height; } @Override public String toString() { return "AvalamPly{" + "joueur=" + getPlayer() + ", from=(" + xFrom + "," + yFrom + ")" + ", to=(" + xTo + "," + yTo + ")" + '}'; } }