Files
BUT3ProjetJeuGroupe/fr/iut_fbleau/Avalam/AvalamPly.java
2025-11-23 17:29:28 +01:00

130 lines
3.7 KiB
Java

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 + ")" +
'}';
}
}