62 lines
1.8 KiB
Java
62 lines
1.8 KiB
Java
|
package view;
|
||
|
|
||
|
import javax.swing.*;
|
||
|
import java.awt.*;
|
||
|
import java.awt.event.MouseAdapter;
|
||
|
import java.awt.event.MouseEvent;
|
||
|
import model.Board;
|
||
|
import model.Tile;
|
||
|
import controller.GameController;
|
||
|
|
||
|
public class BoardView extends JPanel {
|
||
|
private GameController controller;
|
||
|
private int rows = 5;
|
||
|
private int cols = 5;
|
||
|
|
||
|
public BoardView(Board board, GameController controller) {
|
||
|
this.controller = controller;
|
||
|
setLayout(new GridLayout(rows, cols, 5, 5));
|
||
|
initializeBoard();
|
||
|
}
|
||
|
|
||
|
// Méthode pour assigner le contrôleur après création de l'instance
|
||
|
public void setController(GameController controller) {
|
||
|
this.controller = controller;
|
||
|
}
|
||
|
|
||
|
private void initializeBoard() {
|
||
|
for (int i = 0; i < rows * cols; i++) {
|
||
|
JPanel tilePanel = new JPanel();
|
||
|
tilePanel.setBackground(Color.LIGHT_GRAY);
|
||
|
tilePanel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
|
||
|
|
||
|
tilePanel.addMouseListener(new MouseAdapter() {
|
||
|
@Override
|
||
|
public void mouseClicked(MouseEvent e) {
|
||
|
handleTilePlacement(tilePanel);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add(tilePanel);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void handleTilePlacement(JPanel tilePanel) {
|
||
|
if (controller != null) { // Assure que le contrôleur est bien assigné
|
||
|
Tile tile = controller.getNextTile();
|
||
|
if (tile != null) {
|
||
|
tilePanel.setBackground(Color.GREEN);
|
||
|
tilePanel.add(new JLabel(tile.getType()));
|
||
|
revalidate();
|
||
|
repaint();
|
||
|
controller.placeTile(tile);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void refreshBoard() {
|
||
|
revalidate();
|
||
|
repaint();
|
||
|
}
|
||
|
}
|