Jeu jouable avec fin de parti
This commit is contained in:
@@ -4,126 +4,77 @@ 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
|
||||
* Représente un coup (ply) dans le jeu Avalam.
|
||||
*
|
||||
* Un coup est défini par :
|
||||
* <ul>
|
||||
* <li>un joueur (PLAYER1 ou PLAYER2)</li>
|
||||
* <li>une position source (xFrom, yFrom)</li>
|
||||
* <li>une position destination (xTo, yTo)</li>
|
||||
* </ul>
|
||||
*
|
||||
* Ces coordonnées seront utilisées par <code>AvalamBoard</code> pour :
|
||||
* <ul>
|
||||
* <li>vérifier la légalité du coup</li>
|
||||
* <li>fusionner les tours concernées</li>
|
||||
* <li>mettre à jour la grille</li>
|
||||
* </ul>
|
||||
*
|
||||
* Cette classe ne contient aucune logique de vérification : tout est délégué
|
||||
* à <code>AvalamBoard.isLegal()</code> et <code>AvalamBoard.doPly()</code>.
|
||||
*/
|
||||
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;
|
||||
|
||||
/** Coordonnées source */
|
||||
private final int xFrom;
|
||||
private final int yFrom;
|
||||
|
||||
/** Coordonnées destination */
|
||||
private final int xTo;
|
||||
private final int yTo;
|
||||
|
||||
/**
|
||||
* 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
|
||||
* Constructeur principal.
|
||||
*
|
||||
* @param player joueur qui joue le coup
|
||||
* @param xFrom ligne d'origine
|
||||
* @param yFrom colonne d'origine
|
||||
* @param xTo ligne de destination
|
||||
* @param yTo colonne de destination
|
||||
*/
|
||||
public AvalamPly(Player joueur, int xFrom, int yFrom, int xTo, int yTo) {
|
||||
super(joueur);
|
||||
public AvalamPly(Player player, int xFrom, int yFrom, int xTo, int yTo) {
|
||||
super(player);
|
||||
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
|
||||
*/
|
||||
/** Ligne d'origine */
|
||||
public int getXFrom() {
|
||||
return xFrom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la coordonnée Y de la case source.
|
||||
*
|
||||
* @return La coordonnée Y de la case source
|
||||
*/
|
||||
/** Colonne d'origine */
|
||||
public int getYFrom() {
|
||||
return yFrom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la coordonnée X de la case destination.
|
||||
*
|
||||
* @return La coordonnée X de la case destination
|
||||
*/
|
||||
/** Ligne de destination */
|
||||
public int getXTo() {
|
||||
return xTo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la coordonnée Y de la case destination.
|
||||
*
|
||||
* @return La coordonnée Y de la case destination
|
||||
*/
|
||||
/** Colonne de 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 + ")" +
|
||||
"player=" + getPlayer() +
|
||||
", (" + xFrom + "," + yFrom + ") -> (" + xTo + "," + yTo + ")" +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user