Jeu jouable avec fin de parti

This commit is contained in:
2025-11-25 16:02:23 -05:00
parent d23aeb266f
commit 1921b523c6
11 changed files with 537 additions and 913 deletions

View File

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