Plateau graphique v2 *score,tourJoueur,tailleTour,selection* + maj makefile,readme
This commit was merged in pull request #11.
This commit is contained in:
77
fr/iut_fbleau/Avalam/ui/PieceLayer.java
Normal file
77
fr/iut_fbleau/Avalam/ui/PieceLayer.java
Normal file
@@ -0,0 +1,77 @@
|
||||
package fr.iut_fbleau.Avalam.ui;
|
||||
|
||||
import fr.iut_fbleau.Avalam.Tower;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* La classe <code>PieceLayer</code> gère l'affichage des pions
|
||||
* (sous forme de <code>PieceButton</code>) sur la grille.
|
||||
*
|
||||
* Elle s'occupe uniquement :
|
||||
* <ul>
|
||||
* <li>d'afficher les pièces</li>
|
||||
* <li>de positionner correctement les boutons</li>
|
||||
* <li>d'attacher un callback à chaque clic</li>
|
||||
* </ul>
|
||||
*
|
||||
* Aucune logique de jeu n'est réalisée ici.
|
||||
*
|
||||
* @author
|
||||
* @version 1.0
|
||||
*/
|
||||
public class PieceLayer extends JPanel {
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* Initialise un panneau transparent prêt à recevoir des pions.
|
||||
*/
|
||||
public PieceLayer() {
|
||||
setLayout(null);
|
||||
setOpaque(false);
|
||||
setBounds(0, 0, 800, 800);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
public void displayGrid(Tower[][] grid, int xBase, int yBase,
|
||||
int spacing, int size,
|
||||
java.util.function.BiConsumer<Integer, Integer> 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user