nettoyage + lisibilité code + changement structure
This commit is contained in:
94
fr/iut_fbleau/Avalam/HighlightLayer.java
Normal file
94
fr/iut_fbleau/Avalam/HighlightLayer.java
Normal file
@@ -0,0 +1,94 @@
|
||||
package fr.iut_fbleau.Avalam;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* La classe <code>HighlightLayer</code>
|
||||
*
|
||||
* 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<Point> 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<Point> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user