diff --git a/fr/iut_fbleau/Avalam/AvalamBoard.java b/fr/iut_fbleau/Avalam/AvalamBoard.java
index 2a0decc..6c23677 100644
--- a/fr/iut_fbleau/Avalam/AvalamBoard.java
+++ b/fr/iut_fbleau/Avalam/AvalamBoard.java
@@ -9,15 +9,44 @@ import fr.iut_fbleau.GameAPI.Result;
import java.util.ArrayDeque;
import java.util.Iterator;
+/**
+* La classe AvalamBoard
+*
+* Représente le plateau et les règles du jeu Avalam.
+* Cette classe étend AbstractBoard (GameAPI) et fournit :
+* - la génération des coups (iterator)
+* - le test de légalité (isLegal)
+* - l’application d’un coup (doPly)
+* - la détection de fin de partie (isGameOver)
+* - le calcul du résultat (getResult)
+*/
public class AvalamBoard extends AbstractBoard {
+ //Attributs
+
+ /** Taille du plateau Avalam (9x9). */
public static final int SIZE = 9;
+
+ /** Hauteur maximale autorisée pour une tour après fusion. */
private static final int MAX_HEIGHT = 5;
+ /** Grille du plateau : chaque case contient une tour (Tower) ou null si vide. */
private final Tower[][] grid;
+
+ /** Indique si la partie est terminée (mémoïsation). */
private boolean gameOver = false;
+
+ /** Résultat de la partie si elle est terminée (mémoïsation). */
private Result result = null;
+ //Constructeur
+
+ /**
+ * Construit un plateau Avalam à partir d’une grille initiale et d’un joueur qui commence.
+ *
+ * @param initialGrid grille initiale (Tower ou null)
+ * @param startingPlayer joueur qui commence (PLAYER1 ou PLAYER2)
+ */
public AvalamBoard(Tower[][] initialGrid, Player startingPlayer) {
super(startingPlayer, new ArrayDeque<>());
this.grid = new Tower[SIZE][SIZE];
@@ -27,10 +56,24 @@ public class AvalamBoard extends AbstractBoard {
this.grid[r][c] = initialGrid[r][c];
}
+ /**
+ * Construit un plateau Avalam à partir d’une grille initiale.
+ * Par défaut, PLAYER1 commence.
+ *
+ * @param initialGrid grille initiale (Tower ou null)
+ */
public AvalamBoard(Tower[][] initialGrid) {
this(initialGrid, Player.PLAYER1);
}
+ /**
+ * Constructeur interne utilisé par safeCopy().
+ *
+ * @param grid grille à réutiliser
+ * @param current joueur courant
+ * @param gameOver état “partie terminée”
+ * @param result résultat mémorisé
+ */
private AvalamBoard(Tower[][] grid, Player current, boolean gameOver, Result result) {
super(current, new ArrayDeque<>());
this.grid = grid;
@@ -38,24 +81,61 @@ public class AvalamBoard extends AbstractBoard {
this.result = result;
}
+ //Méthodes
+
+ /**
+ * Retourne la tour située à la position (row, col), ou null si hors bornes ou vide.
+ *
+ * @param row ligne
+ * @param col colonne
+ * @return tour présente ou null
+ */
public Tower getTowerAt(int row, int col) {
return inBounds(row, col) ? grid[row][col] : null;
}
+ /**
+ * Teste si une position est à l’intérieur du plateau.
+ *
+ * @param r ligne
+ * @param c colonne
+ * @return true si (r,c) est dans [0..SIZE-1]
+ */
private boolean inBounds(int r, int c) {
return r >= 0 && r < SIZE && c >= 0 && c < SIZE;
}
+ /**
+ * Teste si deux cases sont adjacentes (8-voisinage).
+ *
+ * @param r1 ligne source
+ * @param c1 colonne source
+ * @param r2 ligne destination
+ * @param c2 colonne destination
+ * @return true si les cases sont voisines et différentes
+ */
private boolean areAdjacent(int r1, int c1, int r2, int c2) {
int dr = Math.abs(r1 - r2);
int dc = Math.abs(c1 - c2);
return (dr <= 1 && dc <= 1 && !(dr == 0 && dc == 0));
}
+ /**
+ * Associe un joueur GameAPI à une couleur Avalam.
+ *
+ * @param p joueur (PLAYER1/PLAYER2)
+ * @return couleur correspondante (YELLOW/RED)
+ */
private Color colorForPlayer(Player p) {
return (p == Player.PLAYER1 ? Color.YELLOW : Color.RED);
}
+ /**
+ * Indique si la partie est terminée.
+ * Ici : fin lorsque l’itérateur de coups légaux ne produit plus aucun coup.
+ *
+ * @return true si aucun coup n’est possible
+ */
@Override
public boolean isGameOver() {
if (gameOver) return true;
@@ -67,6 +147,12 @@ public class AvalamBoard extends AbstractBoard {
return true;
}
+ /**
+ * Retourne le résultat si la partie est terminée.
+ * Règle utilisée ici : comparaison du nombre de tours contrôlées par chaque couleur.
+ *
+ * @return WIN / LOSS / DRAW ou null si partie non terminée
+ */
@Override
public Result getResult() {
if (!isGameOver()) return null;
@@ -91,6 +177,19 @@ public class AvalamBoard extends AbstractBoard {
return result;
}
+ /**
+ * Teste si un coup est légal selon les règles implémentées :
+ * - coup de type AvalamPly
+ * - source/destination dans le plateau et différentes
+ * - source et destination non null
+ * - la tour source appartient au joueur courant (couleur du sommet)
+ * - cases adjacentes
+ * - couleurs différentes entre source et destination (règle de ce projet)
+ * - hauteur finale <= MAX_HEIGHT
+ *
+ * @param c coup à tester
+ * @return true si le coup est légal
+ */
@Override
public boolean isLegal(AbstractPly c) {
if (!(c instanceof AvalamPly)) return false;
@@ -114,6 +213,14 @@ public class AvalamBoard extends AbstractBoard {
return true;
}
+ /**
+ * Applique un coup légal :
+ * - fusion de la tour source sur la destination
+ * - la case source devient vide
+ * - passage au joueur suivant via super.doPly
+ *
+ * @param c coup à jouer
+ */
@Override
public void doPly(AbstractPly c) {
if (!isLegal(c)) throw new IllegalArgumentException("Coup illégal : " + c);
@@ -135,6 +242,12 @@ public class AvalamBoard extends AbstractBoard {
result = null;
}
+ /**
+ * Retourne un itérateur sur tous les coups légaux du joueur courant.
+ * Génération brute : pour chaque case et chaque voisin (8 directions), on teste isLegal().
+ *
+ * @return itérateur de coups possibles (AbstractPly)
+ */
@Override
public Iterator iterator() {
java.util.List moves = new java.util.ArrayList<>();
@@ -159,6 +272,12 @@ public class AvalamBoard extends AbstractBoard {
return moves.iterator();
}
+ /**
+ * Retourne une copie “sûre” de l’état du plateau.
+ * Ici, la grille est recopiée case par case (copie des références Tower).
+ *
+ * @return copie du plateau (IBoard)
+ */
@Override
public IBoard safeCopy() {
Tower[][] newGrid = new Tower[SIZE][SIZE];
diff --git a/fr/iut_fbleau/Avalam/AvalamPly.java b/fr/iut_fbleau/Avalam/AvalamPly.java
index b337d31..80dfc4b 100644
--- a/fr/iut_fbleau/Avalam/AvalamPly.java
+++ b/fr/iut_fbleau/Avalam/AvalamPly.java
@@ -4,44 +4,43 @@ import fr.iut_fbleau.GameAPI.AbstractPly;
import fr.iut_fbleau.GameAPI.Player;
/**
- * Représente un coup (ply) dans le jeu Avalam.
- *
- * Un coup est défini par :
- *
- * - un joueur (PLAYER1 ou PLAYER2)
- * - une position source (xFrom, yFrom)
- * - une position destination (xTo, yTo)
- *
- *
- * Ces coordonnées seront utilisées par AvalamBoard pour :
- *
- * - vérifier la légalité du coup
- * - fusionner les tours concernées
- * - mettre à jour la grille
- *
- *
- * Cette classe ne contient aucune logique de vérification : tout est délégué
- * à AvalamBoard.isLegal() et AvalamBoard.doPly().
- */
+* La classe AvalamPly
+*
+* Représente un coup (ply) dans le jeu Avalam.
+* Un coup est défini par :
+* - un joueur (PLAYER1 ou PLAYER2)
+* - une position source (xFrom, yFrom)
+* - une position destination (xTo, yTo)
+*
+* Cette classe ne vérifie pas la légalité : tout est délégué à AvalamBoard.
+*/
public class AvalamPly extends AbstractPly {
- /** Coordonnées source */
+ //Attributs
+
+ /** Coordonnée ligne de la case source. */
private final int xFrom;
+
+ /** Coordonnée colonne de la case source. */
private final int yFrom;
- /** Coordonnées destination */
+ /** Coordonnée ligne de la case destination. */
private final int xTo;
+
+ /** Coordonnée colonne de la case destination. */
private final int yTo;
+ //Constructeur
+
/**
- * 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
- */
+ * Construit un coup Avalam.
+ *
+ * @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 player, int xFrom, int yFrom, int xTo, int yTo) {
super(player);
this.xFrom = xFrom;
@@ -50,26 +49,51 @@ public class AvalamPly extends AbstractPly {
this.yTo = yTo;
}
- /** Ligne d'origine */
+ //Méthodes
+
+ /**
+ * Retourne la ligne d'origine.
+ *
+ * @return ligne source
+ */
public int getXFrom() {
return xFrom;
}
- /** Colonne d'origine */
+ /**
+ * Retourne la colonne d'origine.
+ *
+ * @return colonne source
+ */
public int getYFrom() {
return yFrom;
}
- /** Ligne de destination */
+ /**
+ * Retourne la ligne de destination.
+ *
+ * @return ligne destination
+ */
public int getXTo() {
return xTo;
}
- /** Colonne de destination */
+ /**
+ * Retourne la colonne de destination.
+ *
+ * @return colonne destination
+ */
public int getYTo() {
return yTo;
}
+ //Affichage
+
+ /**
+ * Retourne une représentation textuelle du coup.
+ *
+ * @return chaîne décrivant le coup
+ */
@Override
public String toString() {
return "AvalamPly{" +
diff --git a/fr/iut_fbleau/Avalam/AvalamWindow.java b/fr/iut_fbleau/Avalam/AvalamWindow.java
index 6e85649..36492e5 100644
--- a/fr/iut_fbleau/Avalam/AvalamWindow.java
+++ b/fr/iut_fbleau/Avalam/AvalamWindow.java
@@ -1,9 +1,5 @@
package fr.iut_fbleau.Avalam;
-import fr.iut_fbleau.Avalam.logic.BoardLoader;
-import fr.iut_fbleau.Avalam.ui.BoardView;
-import fr.iut_fbleau.Avalam.ui.ScoreView;
-import fr.iut_fbleau.Avalam.ui.TurnView;
import fr.iut_fbleau.GameAPI.Player;
import fr.iut_fbleau.GameAPI.Result;
@@ -11,41 +7,53 @@ import javax.swing.*;
import java.awt.*;
/**
- * Fenêtre principale du jeu Avalam.
- *
- * Elle contient :
- * - le plateau (BoardView)
- * - l'affichage du score
- * - l'affichage du joueur courant
- *
- * Elle interagit directement avec AvalamBoard (moteur du jeu).
- */
+* La classe AvalamWindow
+*
+* Fenêtre principale (interface graphique) du jeu Avalam.
+* Elle contient :
+* - le plateau (BoardView)
+* - l'affichage du score (ScoreView)
+* - l'affichage du joueur courant (TurnView)
+*
+* Elle pilote un objet AvalamBoard (moteur du jeu).
+*/
public class AvalamWindow extends JFrame {
- /** Moteur du jeu (API GameAPI) */
+ //Attributs
+
+ /** Moteur du jeu (état + règles). */
private AvalamBoard board;
- /** Vues graphiques */
+ /** Vue affichant le score des deux couleurs. */
private ScoreView scoreView;
+
+ /** Vue affichant le joueur dont c'est le tour. */
private TurnView turnView;
+
+ /** Vue affichant le plateau et gérant les interactions de jeu. */
private BoardView boardView;
+ //Constructeur
+
+ /**
+ * Construit la fenêtre et initialise l’interface :
+ * - charge le plateau initial depuis Plateau.txt
+ * - construit les vues (score, tour, plateau)
+ * - affiche la fenêtre
+ */
public AvalamWindow() {
super("Avalam");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
- // ----------------------------------------------------------
// Chargement du plateau initial depuis Plateau.txt
- // ----------------------------------------------------------
Tower[][] initialGrid = BoardLoader.loadFromFile("fr/iut_fbleau/Res/Plateau.txt");
- board = new AvalamBoard(initialGrid); // PLAYER1 commence
+ // Initialisation du moteur (PLAYER1 commence)
+ board = new AvalamBoard(initialGrid);
- // ----------------------------------------------------------
- // PANNEAU SCORE + TOUR
- // ----------------------------------------------------------
+ // Création du panneau supérieur (score + tour)
JPanel topPanel = new JPanel(new GridLayout(2, 1));
topPanel.setBackground(new java.awt.Color(200, 200, 200));
@@ -61,11 +69,8 @@ public class AvalamWindow extends JFrame {
add(topPanel, BorderLayout.NORTH);
- // ----------------------------------------------------------
- // PLATEAU (BoardView)
- // ----------------------------------------------------------
+ // Création de la vue plateau (avec callback de mise à jour)
boardView = new BoardView(board, this::onBoardUpdated);
-
add(boardView, BorderLayout.CENTER);
pack();
@@ -74,49 +79,63 @@ public class AvalamWindow extends JFrame {
setVisible(true);
}
- /* ================================================================
- * MISES À JOUR D’APRÈS LE MOTEUR
- * ================================================================ */
+ //Méthodes
/**
- * Appelé automatiquement après chaque coup via BoardView → controller → board.
- */
+ * Méthode appelée automatiquement après chaque coup (via BoardView).
+ * Elle rafraîchit :
+ * - les scores
+ * - le joueur courant
+ * et affiche un message si la partie est terminée.
+ */
public void onBoardUpdated() {
- // Mise à jour du score et du joueur courant
+ // Mise à jour du score
scoreView.updateScores(
computeScore(Color.YELLOW),
computeScore(Color.RED)
);
+ // Mise à jour du joueur courant
turnView.setTurn(turnMessage());
- // Détection de fin de partie
+ // Détection de fin de partie
if (board.isGameOver()) {
Result res = board.getResult();
String msg;
+ // Correction : ajout des "break" pour éviter le fall-through.
switch (res) {
- case WIN : msg = "Le joueur jaune a gagné !";
- case LOSS : msg = "Le joueur rouge a gagné !";
- case DRAW : msg = "Égalité !";
- default : msg = "Fin de partie.";
+ case WIN:
+ msg = "Le joueur jaune a gagné !";
+ break;
+ case LOSS:
+ msg = "Le joueur rouge a gagné !";
+ break;
+ case DRAW:
+ msg = "Égalité !";
+ break;
+ default:
+ msg = "Fin de partie.";
+ break;
}
- JOptionPane.showMessageDialog(this, msg, "Partie terminée",
- JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(
+ this,
+ msg,
+ "Partie terminée",
+ JOptionPane.INFORMATION_MESSAGE
+ );
}
}
-
- /* ================================================================
- * OUTILS
- * ================================================================ */
-
/**
- * Calcule le score d'une couleur : nombre de tours contrôlées.
- */
+ * Calcule le score d'une couleur : nombre de tours contrôlées (sommet de la tour).
+ *
+ * @param c couleur à compter
+ * @return nombre de tours appartenant à la couleur c
+ */
private int computeScore(Color c) {
int score = 0;
for (int r = 0; r < AvalamBoard.SIZE; r++) {
@@ -131,10 +150,12 @@ public class AvalamWindow extends JFrame {
}
/**
- * Message du joueur dont c'est le tour.
- */
+ * Retourne le message correspondant au joueur dont c'est le tour.
+ *
+ * @return message d’affichage du tour
+ */
private String turnMessage() {
- return "Tour du joueur : " +
+ return "Tour du joueur : " +
(board.getCurrentPlayer() == Player.PLAYER1 ? "Jaune" : "Rouge");
}
}
diff --git a/fr/iut_fbleau/Avalam/logic/BoardLoader.java b/fr/iut_fbleau/Avalam/BoardLoader.java
similarity index 64%
rename from fr/iut_fbleau/Avalam/logic/BoardLoader.java
rename to fr/iut_fbleau/Avalam/BoardLoader.java
index d6f1f52..a022013 100644
--- a/fr/iut_fbleau/Avalam/logic/BoardLoader.java
+++ b/fr/iut_fbleau/Avalam/BoardLoader.java
@@ -1,4 +1,4 @@
-package fr.iut_fbleau.Avalam.logic;
+package fr.iut_fbleau.Avalam;
import fr.iut_fbleau.Avalam.Color;
import fr.iut_fbleau.Avalam.Tower;
@@ -8,8 +8,32 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+/**
+* La classe BoardLoader
+*
+* Permet de charger un plateau Avalam à partir d’un fichier texte.
+* Le fichier contient une grille 9x9 de valeurs numériques :
+* - 0 : case vide
+* - 1 : tour jaune
+* - 2 : tour rouge
+*
+* Cette classe fournit une méthode statique pour construire
+* une grille de tours (Tower[][]) à partir d’une ressource.
+*/
public class BoardLoader {
+ //Attributs
+
+ //Constructeur
+
+ //Méthodes
+
+ /**
+ * Charge un plateau Avalam depuis un fichier de ressources.
+ *
+ * @param resourcePath chemin du fichier de plateau (dans les ressources)
+ * @return une grille 9x9 de tours (Tower) ou null pour les cases vides
+ */
public static Tower[][] loadFromFile(String resourcePath) {
Tower[][] grid = new Tower[9][9];
@@ -17,7 +41,7 @@ public class BoardLoader {
InputStream in = BoardLoader.class.getResourceAsStream("/" + resourcePath);
if (in == null) {
- System.err.println("❌ Ressource introuvable : /" + resourcePath);
+ System.err.println("Ressource introuvable : /" + resourcePath);
return grid;
}
@@ -28,7 +52,7 @@ public class BoardLoader {
while ((line = reader.readLine()) != null && row < 9) {
- // 🔥 Accepte SOIT les espaces, SOIT les virgules
+ // Accepte SOIT les espaces, SOIT les virgules
line = line.replace(",", " ");
String[] parts = line.trim().split("\\s+");
diff --git a/fr/iut_fbleau/Avalam/ui/BoardView.java b/fr/iut_fbleau/Avalam/BoardView.java
similarity index 63%
rename from fr/iut_fbleau/Avalam/ui/BoardView.java
rename to fr/iut_fbleau/Avalam/BoardView.java
index 7918eeb..208f79b 100644
--- a/fr/iut_fbleau/Avalam/ui/BoardView.java
+++ b/fr/iut_fbleau/Avalam/BoardView.java
@@ -1,4 +1,4 @@
-package fr.iut_fbleau.Avalam.ui;
+package fr.iut_fbleau.Avalam;
import fr.iut_fbleau.Avalam.AvalamBoard;
import fr.iut_fbleau.Avalam.Tower;
@@ -7,43 +7,59 @@ import javax.swing.*;
import java.awt.*;
/**
- * BoardView est la vue principale du plateau Avalam.
- *
- * Elle gère :
- * - l’affichage des tours (PieceLayer)
- * - l’affichage des coups possibles (HighlightLayer)
- * - un fond graphique personnalisé
- * - les clics via InteractionController
- */
+* La classe BoardView
+*
+* Représente la vue principale du plateau Avalam.
+* Elle gère :
+* - l’affichage des tours (PieceLayer)
+* - l’affichage des coups possibles (HighlightLayer)
+* - l’affichage du fond graphique
+* - la gestion des interactions via InteractionController
+*
+* Cette classe ne contient aucune logique de jeu.
+*/
public class BoardView extends JLayeredPane {
- /** Référence au moteur Avalam */
+ //Attributs
+
+ /** Référence au moteur du jeu Avalam. */
private AvalamBoard board;
- /** Couche d’affichage du fond */
+ /** Couche graphique du fond du plateau. */
private BackgroundLayer backgroundLayer;
- /** Couche d’affichage des rond verts */
+ /** Couche graphique des déplacements possibles. */
private HighlightLayer highlightLayer;
- /** Couche d’affichage des pièces */
+ /** Couche graphique des pièces (tours). */
private PieceLayer pieceLayer;
- /** Contrôleur des interactions */
+ /** Contrôleur des interactions utilisateur. */
private InteractionController controller;
- /** Décalages et dimensions pour l'affichage */
+ /** Taille d’un pion en pixels. */
private final int size = 50;
+
+ /** Espacement entre deux cases du plateau. */
private final int spacing = 70;
+
+ /** Décalage horizontal du plateau. */
private final int xBase = 60;
+
+ /** Décalage vertical du plateau. */
private final int yBase = 60;
- /** Callback vers AvalamWindow pour mises à jour (score, tour, fin) */
+ /** Callback vers AvalamWindow pour mettre à jour l’interface (score, tour, fin). */
private Runnable boardUpdateCallback;
+ //Constructeur
+
/**
- * Constructeur.
- */
+ * Construit la vue du plateau Avalam.
+ *
+ * @param board moteur du jeu Avalam
+ * @param boardUpdateCallback fonction de rappel après un coup
+ */
public BoardView(AvalamBoard board, Runnable boardUpdateCallback) {
this.board = board;
this.boardUpdateCallback = boardUpdateCallback;
@@ -71,9 +87,11 @@ public class BoardView extends JLayeredPane {
refresh();
}
+ //Méthodes
+
/**
- * Appelé par le contrôleur après un coup.
- */
+ * Appelé par le contrôleur après un coup.
+ */
public void onBoardUpdated() {
if (boardUpdateCallback != null) {
boardUpdateCallback.run();
@@ -81,8 +99,8 @@ public class BoardView extends JLayeredPane {
}
/**
- * Rafraîchit les couches visuelles.
- */
+ * Rafraîchit l’affichage du plateau.
+ */
public void refresh() {
pieceLayer.displayGrid(
@@ -100,8 +118,10 @@ public class BoardView extends JLayeredPane {
}
/**
- * Récupère la grille depuis le moteur.
- */
+ * Récupère la grille actuelle du moteur de jeu.
+ *
+ * @return grille 9x9 de tours
+ */
private Tower[][] boardGrid() {
Tower[][] grid = new Tower[AvalamBoard.SIZE][AvalamBoard.SIZE];
@@ -113,18 +133,28 @@ public class BoardView extends JLayeredPane {
return grid;
}
+ //Affichage
+
/**
- * Composant affichant l’image de fond.
- */
+ * Classe interne représentant la couche graphique du fond.
+ */
private static class BackgroundLayer extends JComponent {
private Image img;
+ /**
+ * Construit une couche de fond à partir d’une image.
+ *
+ * @param resourcePath chemin de l’image
+ */
public BackgroundLayer(String resourcePath) {
img = Toolkit.getDefaultToolkit().getImage(
getClass().getClassLoader().getResource(resourcePath)
);
}
+ /**
+ * Dessine l’image de fond.
+ */
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
diff --git a/fr/iut_fbleau/Avalam/Color.java b/fr/iut_fbleau/Avalam/Color.java
index 5eedab1..061a9d0 100644
--- a/fr/iut_fbleau/Avalam/Color.java
+++ b/fr/iut_fbleau/Avalam/Color.java
@@ -1,20 +1,57 @@
package fr.iut_fbleau.Avalam;
+/**
+* L'énumération Color
+*
+* Représente les deux couleurs utilisées dans Avalam :
+* - YELLOW (jaune)
+* - RED (rouge)
+*
+* Chaque valeur est associée à une couleur Swing (java.awt.Color)
+* pour l’affichage graphique et peut être convertie en Player (GameAPI).
+*/
public enum Color {
+ //Attributs
+
+ /** Couleur jaune (associée à PLAYER1). */
YELLOW(255, 220, 0),
+
+ /** Couleur rouge (associée à PLAYER2). */
RED(200, 40, 40);
+ /** Couleur Swing utilisée pour l'affichage dans l'interface graphique. */
private final java.awt.Color swingColor;
+ //Constructeur
+
+ /**
+ * Construit une couleur Avalam en initialisant sa couleur Swing associée.
+ *
+ * @param r composante rouge [0..255]
+ * @param g composante verte [0..255]
+ * @param b composante bleue [0..255]
+ */
Color(int r, int g, int b) {
this.swingColor = new java.awt.Color(r, g, b);
}
+ //Méthodes
+
+ /**
+ * Retourne la couleur Swing associée (pour l'affichage).
+ *
+ * @return java.awt.Color
+ */
public java.awt.Color getSwingColor() {
return swingColor;
}
+ /**
+ * Convertit la couleur Avalam en joueur GameAPI.
+ *
+ * @return PLAYER1 si YELLOW, sinon PLAYER2
+ */
public fr.iut_fbleau.GameAPI.Player toPlayer() {
return (this == YELLOW ?
fr.iut_fbleau.GameAPI.Player.PLAYER1 :
diff --git a/fr/iut_fbleau/Avalam/HighlightLayer.java b/fr/iut_fbleau/Avalam/HighlightLayer.java
new file mode 100644
index 0000000..f08fb92
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/HighlightLayer.java
@@ -0,0 +1,94 @@
+package fr.iut_fbleau.Avalam;
+
+import javax.swing.*;
+import java.awt.*;
+import java.util.List;
+
+/**
+* La classe HighlightLayer
+*
+* Gère l'affichage graphique des cases jouables sur le plateau Avalam.
+* Les cases autorisées sont représentées par des cercles verts semi-transparents.
+*
+* Cette classe ne contient aucune logique de jeu.
+*/
+public class HighlightLayer extends JPanel {
+
+ //Attributs
+
+ /** Position X de base du plateau. */
+ private int xBase;
+
+ /** Position Y de base du plateau. */
+ private int yBase;
+
+ /** Espacement entre les cases du plateau. */
+ private int spacing;
+
+ /** Taille d’un pion en pixels. */
+ private int size;
+
+ /** Liste des positions jouables (cases en vert). */
+ private List legalMoves;
+
+ //Constructeur
+
+ /**
+ * Construit la couche d'affichage des coups légaux.
+ *
+ * @param xBase position X de base du plateau
+ * @param yBase position Y de base du plateau
+ * @param spacing espacement entre cases
+ * @param size taille des pions
+ */
+ public HighlightLayer(int xBase, int yBase, int spacing, int size) {
+ this.xBase = xBase;
+ this.yBase = yBase;
+ this.spacing = spacing;
+ this.size = size;
+
+ setOpaque(false);
+ setBounds(0, 0, 800, 800);
+ }
+
+ //Méthodes
+
+ /**
+ * Définit la liste des cases légales à afficher.
+ *
+ * @param moves liste des positions jouables
+ */
+ public void setLegalMoves(List moves) {
+ this.legalMoves = moves;
+ repaint();
+ }
+
+ //Affichage
+
+ /**
+ * Dessine les cercles verts autour des cases autorisées.
+ *
+ * @param g contexte graphique
+ */
+ @Override
+ protected void paintComponent(Graphics g) {
+ super.paintComponent(g);
+
+ if (legalMoves == null) return;
+
+ Graphics2D g2 = (Graphics2D) g;
+ g2.setColor(new java.awt.Color(0, 255, 0, 120));
+
+ for (Point p : legalMoves) {
+
+ int r = p.x;
+ int c = p.y;
+
+ int x = xBase + c * spacing;
+ int y = yBase + r * spacing;
+
+ int highlight = size + 20; // Cercle plus grand que le pion
+ g2.fillOval(x - 10, y - 10, highlight, highlight);
+ }
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/ui/InteractionController.java b/fr/iut_fbleau/Avalam/InteractionController.java
similarity index 62%
rename from fr/iut_fbleau/Avalam/ui/InteractionController.java
rename to fr/iut_fbleau/Avalam/InteractionController.java
index 42c7436..8d74e80 100644
--- a/fr/iut_fbleau/Avalam/ui/InteractionController.java
+++ b/fr/iut_fbleau/Avalam/InteractionController.java
@@ -1,8 +1,4 @@
-package fr.iut_fbleau.Avalam.ui;
-
-import fr.iut_fbleau.Avalam.AvalamBoard;
-import fr.iut_fbleau.Avalam.AvalamPly;
-import fr.iut_fbleau.Avalam.Tower;
+package fr.iut_fbleau.Avalam;
import fr.iut_fbleau.GameAPI.AbstractPly;
import fr.iut_fbleau.GameAPI.Player;
@@ -13,48 +9,71 @@ import java.util.Iterator;
import java.util.List;
/**
- * Le contrôleur gère toute l'interaction entre l'utilisateur et le moteur Avalam.
- *
- * Son rôle :
- * - gérer la sélection d’une tour
- * - générer les coups légaux via l’API (iterator)
- * - valider un déplacement (isLegal)
- * - appliquer un coup (doPly)
- * - mettre à jour le plateau (via refresh demandé au BoardView)
- *
- * IMPORTANT : ce contrôleur n’affiche rien. Il envoie les infos à BoardView.
- */
+* La classe InteractionController
+*
+* Gère l'interaction entre l'utilisateur et le moteur du jeu Avalam.
+* Elle permet :
+* - la sélection d'une tour
+* - le calcul des coups légaux
+* - la validation d'un déplacement
+* - l'application d'un coup
+* - la mise à jour de l'affichage via BoardView
+*
+* Cette classe ne réalise aucun affichage direct.
+*/
public class InteractionController {
+ //Attributs
+
+ /** Référence au moteur du jeu Avalam. */
private AvalamBoard board;
- /** Position sélectionnée (-1 si aucune) */
+ /** Ligne de la tour sélectionnée (-1 si aucune). */
private int selectedRow = -1;
+
+ /** Colonne de la tour sélectionnée (-1 si aucune). */
private int selectedCol = -1;
- /** Liste des coups légaux (en Point) autour de la sélection */
+ /** Liste des coups légaux (sous forme de points). */
private List legalMoves = new ArrayList<>();
- /** Référence à la vue pour la rafraîchir après déplacements */
+ /** Référence à la vue du plateau pour rafraîchir l'affichage. */
private BoardView view;
+ //Constructeur
+
+ /**
+ * Construit le contrôleur d'interactions.
+ *
+ * @param board moteur du jeu Avalam
+ * @param view vue du plateau
+ */
public InteractionController(AvalamBoard board, BoardView view) {
this.board = board;
this.view = view;
}
- /** Retourne les cases jouables (pour HighlightLayer). */
+ //Méthodes
+
+ /**
+ * Retourne la liste des cases jouables.
+ *
+ * @return liste des coups légaux
+ */
public List getLegalMoves() {
return legalMoves;
}
/**
- * Appelé lorsqu’un pion est cliqué dans BoardView.
- * Gère :
- * - sélection d’une tour
- * - désélection
- * - tentative de déplacement (si clique sur un highlight)
- */
+ * Appelé lorsqu’un pion est cliqué dans BoardView.
+ * Gère :
+ * - la sélection d’une tour
+ * - la désélection
+ * - la tentative de déplacement
+ *
+ * @param r ligne cliquée
+ * @param c colonne cliquée
+ */
public void onPieceClicked(int r, int c) {
// Si on clique la même case ⇒ désélection
@@ -79,16 +98,21 @@ public class InteractionController {
}
}
- /* -------------------------------------------------------------------------
- * SÉLECTION D’UNE TOUR
- * ---------------------------------------------------------------------- */
-
+ /**
+ * Sélectionne une tour à la position (r,c).
+ *
+ * @param r ligne
+ * @param c colonne
+ */
private void selectTower(int r, int c) {
selectedRow = r;
selectedCol = c;
computeLegalMoves();
}
+ /**
+ * Annule la sélection actuelle.
+ */
private void clearSelection() {
selectedRow = -1;
selectedCol = -1;
@@ -96,9 +120,9 @@ public class InteractionController {
}
/**
- * Identifie les destinations possibles depuis la tour sélectionnée.
- * Utilise l’API officielle : board.iterator()
- */
+ * Calcule les coups légaux à partir de la tour sélectionnée.
+ * Utilise l'itérateur fourni par AvalamBoard.
+ */
private void computeLegalMoves() {
legalMoves.clear();
@@ -117,13 +141,12 @@ public class InteractionController {
}
}
- /* -------------------------------------------------------------------------
- * TENTATIVE DE DÉPLACEMENT
- * ---------------------------------------------------------------------- */
-
/**
- * Tente d’exécuter un déplacement vers (r,c) si c’est un coup légal.
- */
+ * Tente d’exécuter un déplacement vers la case (r,c).
+ *
+ * @param r ligne de destination
+ * @param c colonne de destination
+ */
private void tryMove(int r, int c) {
// Vérifier si (r,c) est une destination légale
boolean isLegalDest = false;
@@ -152,11 +175,11 @@ public class InteractionController {
// Réinitialiser la sélection
clearSelection();
- // Recalcul du score + joueur courant + fin de partie (handled in window)
+ // Mise à jour de l'interface
view.onBoardUpdated();
} else {
- // Coup impossible (rare, mais pour sécurité)
+ // Coup impossible
clearSelection();
}
diff --git a/fr/iut_fbleau/Avalam/Main.java b/fr/iut_fbleau/Avalam/Main.java
index 822dfdd..4257f02 100644
--- a/fr/iut_fbleau/Avalam/Main.java
+++ b/fr/iut_fbleau/Avalam/Main.java
@@ -1,6 +1,27 @@
package fr.iut_fbleau.Avalam;
+/**
+* La classe Main
+*
+* Point d’entrée du programme.
+* Lance l’interface graphique principale (AvalamWindow).
+*/
public class Main {
+
+ //Attributs
+
+ //Constructeur
+ public Main() {
+
+ }
+
+ //Méthodes
+
+ /**
+ * Méthode principale : démarre l’application.
+ *
+ * @param args arguments de la ligne de commande (non utilisés)
+ */
public static void main(String[] args) {
new AvalamWindow();
}
diff --git a/fr/iut_fbleau/Avalam/ui/PieceButton.java b/fr/iut_fbleau/Avalam/PieceButton.java
similarity index 58%
rename from fr/iut_fbleau/Avalam/ui/PieceButton.java
rename to fr/iut_fbleau/Avalam/PieceButton.java
index c0ef110..7fedbaa 100644
--- a/fr/iut_fbleau/Avalam/ui/PieceButton.java
+++ b/fr/iut_fbleau/Avalam/PieceButton.java
@@ -1,40 +1,47 @@
-package fr.iut_fbleau.Avalam.ui;
-
+package fr.iut_fbleau.Avalam;
import javax.swing.*;
import java.awt.*;
/**
- * La classe PieceButton représente graphiquement une tour Avalam.
- * Il s'agit d'un bouton rond :
- *
- *
- * - coloré selon le joueur
- * - affichant sa hauteur
- * - avec un effet de survol visuel
- *
- *
- * Ce composant sert d'interaction principale pour cliquer les pions.
- *
- * @author
- * @version 1.0
- */
+* La classe PieceButton
+*
+* Représente graphiquement une tour Avalam sous forme d’un bouton rond.
+* Chaque bouton :
+* - possède une couleur correspondant au joueur,
+* - affiche la hauteur de la tour,
+* - réagit au survol de la souris.
+*
+* Ce composant permet l’interaction avec les pièces du plateau.
+*/
public class PieceButton extends JButton {
- private Color color;
+ //Attributs
+
+ /** Couleur graphique du pion. */
+ private java.awt.Color color;
+
+ /** Hauteur de la tour affichée. */
private int height;
+
+ /** Indique si la souris survole le bouton. */
private boolean hover = false;
- /** Position de la tour sur la grille. */
- public final int row, col;
+ /** Position de la tour sur la grille (ligne). */
+ public final int row;
+
+ /** Position de la tour sur la grille (colonne). */
+ public final int col;
+
+ //Constructeur
/**
- * Constructeur.
- *
- * @param c couleur graphique du pion
- * @param height hauteur de la tour
- * @param row ligne du pion
- * @param col colonne du pion
- */
+ * Construit un bouton représentant une tour Avalam.
+ *
+ * @param c couleur graphique du pion
+ * @param height hauteur de la tour
+ * @param row ligne du pion
+ * @param col colonne du pion
+ */
public PieceButton(java.awt.Color c, int height, int row, int col) {
this.color = c;
this.height = height;
@@ -52,9 +59,13 @@ public class PieceButton extends JButton {
});
}
+ //Méthodes
+
/**
- * Dessine le pion rond ainsi que son chiffre au centre.
- */
+ * Dessine le pion rond ainsi que sa hauteur au centre.
+ *
+ * @param g contexte graphique
+ */
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g.create();
@@ -78,9 +89,15 @@ public class PieceButton extends JButton {
g2.dispose();
}
+ //Affichage
+
/**
- * Rend le bouton réellement rond (zone cliquable circulaire).
- */
+ * Rend le bouton réellement rond (zone cliquable circulaire).
+ *
+ * @param x coordonnée X
+ * @param y coordonnée Y
+ * @return true si le point est dans le cercle
+ */
@Override
public boolean contains(int x, int y) {
double dx = x - getWidth()/2.0;
diff --git a/fr/iut_fbleau/Avalam/ui/PieceLayer.java b/fr/iut_fbleau/Avalam/PieceLayer.java
similarity index 55%
rename from fr/iut_fbleau/Avalam/ui/PieceLayer.java
rename to fr/iut_fbleau/Avalam/PieceLayer.java
index 0c69076..3c0276b 100644
--- a/fr/iut_fbleau/Avalam/ui/PieceLayer.java
+++ b/fr/iut_fbleau/Avalam/PieceLayer.java
@@ -1,48 +1,44 @@
-package fr.iut_fbleau.Avalam.ui;
-
-import fr.iut_fbleau.Avalam.Tower;
+package fr.iut_fbleau.Avalam;
import javax.swing.*;
import java.awt.*;
/**
- * La classe PieceLayer gère l'affichage des pions
- * (sous forme de PieceButton) sur la grille.
- *
- * Elle s'occupe uniquement :
- *
- * - d'afficher les pièces
- * - de positionner correctement les boutons
- * - d'attacher un callback à chaque clic
- *
- *
- * Aucune logique de jeu n'est réalisée ici.
- *
- * @author
- * @version 1.0
- */
+* La classe PieceLayer
+*
+* Gère l'affichage des tours du plateau Avalam sous forme de boutons.
+* Elle :
+* - affiche les pièces,
+* - positionne les boutons sur la grille,
+* - associe une action de clic à chaque pièce.
+*
+* Aucune logique de jeu n'est implémentée ici.
+*/
public class PieceLayer extends JPanel {
+ //Constructeur
+
/**
- * Constructeur.
- * Initialise un panneau transparent prêt à recevoir des pions.
- */
+ * Construit la couche graphique des pièces.
+ */
public PieceLayer() {
setLayout(null);
setOpaque(false);
setBounds(0, 0, 800, 800);
}
+ //Méthodes
+
/**
- * Affiche la grille de tours sous forme de boutons.
- *
- * @param grid grille 9×9 des tours
- * @param xBase offset X du plateau
- * @param yBase offset Y du plateau
- * @param spacing espacement entre cases
- * @param size taille d'un pion
- * @param clickCallback fonction appelée lors d’un clic sur un pion
- */
+ * Affiche la grille de tours sous forme de boutons interactifs.
+ *
+ * @param grid grille 9×9 des tours
+ * @param xBase décalage horizontal du plateau
+ * @param yBase décalage vertical du plateau
+ * @param spacing espacement entre cases
+ * @param size taille d'un pion
+ * @param clickCallback fonction appelée lors d’un clic sur un pion
+ */
public void displayGrid(Tower[][] grid, int xBase, int yBase,
int spacing, int size,
java.util.function.BiConsumer clickCallback) {
diff --git a/fr/iut_fbleau/Avalam/ScoreView.java b/fr/iut_fbleau/Avalam/ScoreView.java
new file mode 100644
index 0000000..2a548ea
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/ScoreView.java
@@ -0,0 +1,57 @@
+package fr.iut_fbleau.Avalam;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+* La classe ScoreView
+*
+* Affiche les scores des deux joueurs du jeu Avalam.
+* Cette classe est purement graphique : elle ne calcule pas les scores.
+*/
+public class ScoreView extends JPanel {
+
+ //Attributs
+
+ /** Label affichant le score du joueur jaune. */
+ private JLabel scoreY;
+
+ /** Label affichant le score du joueur rouge. */
+ private JLabel scoreR;
+
+ //Constructeur
+
+ /**
+ * Construit la vue des scores.
+ *
+ * @param y score initial du joueur jaune
+ * @param r score initial du joueur rouge
+ */
+ public ScoreView(int y, int r) {
+ setBackground(new java.awt.Color(200,200,200));
+ setLayout(new FlowLayout());
+
+ scoreY = new JLabel("Score Jaune : " + y);
+ scoreR = new JLabel("Score Rouge : " + r);
+
+ scoreY.setFont(new Font("Arial", Font.BOLD, 18));
+ scoreR.setFont(new Font("Arial", Font.BOLD, 18));
+
+ add(scoreY);
+ add(new JLabel(" | "));
+ add(scoreR);
+ }
+
+ //Méthodes
+
+ /**
+ * Met à jour l'affichage des scores.
+ *
+ * @param y nouveau score du joueur jaune
+ * @param r nouveau score du joueur rouge
+ */
+ public void updateScores(int y, int r) {
+ scoreY.setText("Score Jaune : " + y);
+ scoreR.setText("Score Rouge : " + r);
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/Tower.java b/fr/iut_fbleau/Avalam/Tower.java
index a160bc3..6dcd39c 100644
--- a/fr/iut_fbleau/Avalam/Tower.java
+++ b/fr/iut_fbleau/Avalam/Tower.java
@@ -1,48 +1,99 @@
package fr.iut_fbleau.Avalam;
/**
- * Représente une tour dans le jeu Avalam.
- *
- * Une tour possède :
- * - la couleur de son sommet
- * - sa hauteur (nombre de pions)
- */
+* La classe Tower
+*
+* Représente une tour dans le jeu Avalam.
+* Une tour est caractérisée par :
+* - une couleur (couleur du sommet)
+* - une hauteur (nombre de pions empilés)
+*
+* Cette version est volontairement compatible avec le reste du projet :
+* - constructeur Tower(Color) utilisé par BoardLoader
+* - constructeur Tower(int, Color) utilisé dans d'autres parties possibles
+* - méthode mergeTower(Tower) utilisée par AvalamBoard
+* - méthode merge(Tower) conservée (si elle est utilisée ailleurs)
+*/
public class Tower {
- private Color color;
+ //Attributs
+
+ /** Hauteur de la tour (nombre de pions empilés). */
private int height;
- /** Nouvelle tour de hauteur 1 */
+ /** Couleur du sommet de la tour (propriétaire actuel). */
+ private Color color;
+
+ //Constructeur
+
+ /**
+ * Construit une tour de hauteur 1 avec la couleur donnée.
+ * (Constructeur attendu par BoardLoader dans ton projet.)
+ *
+ * @param color couleur du sommet
+ */
public Tower(Color color) {
- this.color = color;
- this.height = 1;
+ this(1, color);
}
- /** Tour avec couleur et hauteur existantes */
- public Tower(Color color, int height) {
- this.color = color;
+ /**
+ * Construit une tour avec une hauteur et une couleur données.
+ *
+ * @param height hauteur initiale
+ * @param color couleur du sommet
+ */
+ public Tower(int height, Color color) {
this.height = height;
+ this.color = color;
}
- public Color getColor() {
- return color;
- }
+ //Méthodes
+ /**
+ * Retourne la hauteur de la tour.
+ *
+ * @return hauteur
+ */
public int getHeight() {
return height;
}
/**
- * Fusionne this (destination) avec src (source).
- * La source monte sur la destination →
- * - la couleur du sommet devient celle de src
- * - la hauteur s’additionne
- */
- public void mergeTower(Tower src) {
- this.color = src.color;
- this.height = this.height + src.height;
+ * Retourne la couleur du sommet.
+ *
+ * @return couleur
+ */
+ public Color getColor() {
+ return color;
}
+ /**
+ * Fusionne la tour src sur la tour courante (destination).
+ * La couleur du sommet devient celle de src.
+ *
+ * @param src tour source empilée sur la destination
+ */
+ public void merge(Tower src) {
+ this.height += src.height;
+ this.color = src.color;
+ }
+
+ /**
+ * Alias de merge() pour compatibilité avec d'autres classes.
+ *
+ * @param src tour source empilée sur la destination
+ */
+ public void mergeTower(Tower src) {
+ merge(src);
+ }
+
+ //Affichage
+
+ /**
+ * Représentation textuelle de la tour.
+ *
+ * @return chaîne représentant la tour
+ */
@Override
public String toString() {
return color + "(" + height + ")";
diff --git a/fr/iut_fbleau/Avalam/TurnView.java b/fr/iut_fbleau/Avalam/TurnView.java
new file mode 100644
index 0000000..246440c
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/TurnView.java
@@ -0,0 +1,45 @@
+package fr.iut_fbleau.Avalam;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+* La classe TurnView
+*
+* Affiche le joueur dont c'est le tour dans le jeu Avalam.
+* Cette classe est uniquement graphique.
+*/
+public class TurnView extends JPanel {
+
+ //Attributs
+
+ /** Label affichant le joueur courant. */
+ private JLabel text;
+
+ //Constructeur
+
+ /**
+ * Construit la vue du tour de jeu.
+ *
+ * @param initial message initial à afficher
+ */
+ public TurnView(String initial) {
+ setBackground(new java.awt.Color(220,220,220));
+
+ text = new JLabel(initial);
+ text.setFont(new Font("Arial", Font.BOLD, 20));
+
+ add(text);
+ }
+
+ //Méthodes
+
+ /**
+ * Met à jour le texte affichant le joueur courant.
+ *
+ * @param s message à afficher
+ */
+ public void setTurn(String s) {
+ text.setText(s);
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/ui/HighlightLayer.java b/fr/iut_fbleau/Avalam/ui/HighlightLayer.java
deleted file mode 100644
index 81513bd..0000000
--- a/fr/iut_fbleau/Avalam/ui/HighlightLayer.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package fr.iut_fbleau.Avalam.ui;
-
-import javax.swing.*;
-import java.awt.*;
-import java.util.List;
-
-/**
- * La classe HighlightLayer est responsable de l'affichage des
- * cases de déplacement autorisées sous forme de cercles verts.
- *
- * Elle n'interagit pas directement avec les pièces, mais se contente
- * de dessiner en arrière-plan selon une liste de positions légales.
- *
- * @author
- * @version 1.0
- */
-public class HighlightLayer extends JPanel {
-
- private int xBase, yBase, spacing, size;
-
- /** Liste des positions jouables (cases en vert). */
- private List legalMoves;
-
- /**
- * Constructeur.
- *
- * @param xBase position X de base du plateau
- * @param yBase position Y de base du plateau
- * @param spacing espacement entre cases
- * @param size taille des pions
- */
- public HighlightLayer(int xBase, int yBase, int spacing, int size) {
- this.xBase = xBase;
- this.yBase = yBase;
- this.spacing = spacing;
- this.size = size;
-
- setOpaque(false);
- setBounds(0, 0, 800, 800);
- }
-
- /**
- * Définit la liste des cases légales à afficher.
- */
- public void setLegalMoves(List moves) {
- this.legalMoves = moves;
- repaint();
- }
-
- /**
- * Dessine les cercles verts autour des cases autorisées.
- */
- @Override
- protected void paintComponent(Graphics g) {
- super.paintComponent(g);
-
- if (legalMoves == null) return;
-
- Graphics2D g2 = (Graphics2D) g;
- g2.setColor(new Color(0, 255, 0, 120));
-
- for (Point p : legalMoves) {
-
- int r = p.x;
- int c = p.y;
-
- int x = xBase + c * spacing;
- int y = yBase + r * spacing;
-
- int highlight = size + 20; // Cercle plus grand que le pion
- g2.fillOval(x - 10, y - 10, highlight, highlight);
- }
- }
-}
diff --git a/fr/iut_fbleau/Avalam/ui/ScoreView.java b/fr/iut_fbleau/Avalam/ui/ScoreView.java
deleted file mode 100644
index 494d33f..0000000
--- a/fr/iut_fbleau/Avalam/ui/ScoreView.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package fr.iut_fbleau.Avalam.ui;
-
-import javax.swing.*;
-import java.awt.*;
-
-/**
- * La classe ScoreView affiche les scores actuels des deux joueurs.
- *
- * Elle est purement graphique : aucune logique de calcul n'est présente.
- *
- * @author
- * @version 1.0
- */
-public class ScoreView extends JPanel {
-
- private JLabel scoreY, scoreR;
-
- /**
- * Constructeur.
- *
- * @param y score initial du joueur jaune
- * @param r score initial du joueur rouge
- */
- public ScoreView(int y, int r) {
- setBackground(new Color(200,200,200));
- setLayout(new FlowLayout());
-
- scoreY = new JLabel("Score Jaune : " + y);
- scoreR = new JLabel("Score Rouge : " + r);
-
- scoreY.setFont(new Font("Arial", Font.BOLD, 18));
- scoreR.setFont(new Font("Arial", Font.BOLD, 18));
-
- add(scoreY);
- add(new JLabel(" | "));
- add(scoreR);
- }
-
- /**
- * Met à jour l'affichage des scores.
- */
- public void updateScores(int y, int r) {
- scoreY.setText("Score Jaune : " + y);
- scoreR.setText("Score Rouge : " + r);
- }
-}
diff --git a/fr/iut_fbleau/Avalam/ui/TurnView.java b/fr/iut_fbleau/Avalam/ui/TurnView.java
deleted file mode 100644
index 5b28c90..0000000
--- a/fr/iut_fbleau/Avalam/ui/TurnView.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package fr.iut_fbleau.Avalam.ui;
-
-import javax.swing.*;
-import java.awt.*;
-
-/**
- * La classe TurnView affiche le joueur à qui c'est le tour.
- *
- * Elle agit comme une simple bannière d’information,
- * mise à jour par la logique du jeu.
- *
- * @author
- * @version 1.0
- */
-public class TurnView extends JPanel {
-
- private JLabel text;
-
- /**
- * Constructeur.
- *
- * @param initial message initial à afficher
- */
- public TurnView(String initial) {
- setBackground(new Color(220,220,220));
-
- text = new JLabel(initial);
- text.setFont(new Font("Arial", Font.BOLD, 20));
-
- add(text);
- }
-
- /**
- * Met à jour le texte affichant le joueur courant.
- *
- * @param s message à afficher
- */
- public void setTurn(String s) {
- text.setText(s);
- }
-}