package fr.iut_fbleau.Avalam; import javax.swing.*; import java.awt.*; /** * 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 /** * 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 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) { removeAll(); for (int r = 0; r < 9; r++) { for (int c = 0; c < 9; c++) { Tower t = grid[r][c]; if (t != null) { PieceButton pb = new PieceButton( t.getColor().getSwingColor(), t.getHeight(), r, c ); pb.setBounds(xBase + c * spacing, yBase + r * spacing, size, size); int fr = r, fc = c; pb.addActionListener(e -> clickCallback.accept(fr, fc)); add(pb); } } } revalidate(); repaint(); } }