130 lines
3.7 KiB
Java
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 + ")" +
|
|
'}';
|
|
}
|
|
}
|
|
|