package view; import model.Game; import model.Tile; import controller.GameController; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class GameView extends JFrame { private JLabel scoreLabel; private BoardView boardView; private GameController controller; // Ajoute le contrôleur ici public GameView(Game game) { // Constructeur sans le contrôleur en paramètre setTitle("Dorfromantik en Java"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500, 500); setLayout(new BorderLayout()); scoreLabel = new JLabel("Score : " + game.getScore()); boardView = new BoardView(game.getBoard(), null); // Initialise BoardView sans contrôleur JButton nextTileButton = new JButton("Sélectionner une tuile"); nextTileButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (controller != null) { // Vérifie que le contrôleur est bien assigné Tile tile = new Tile("forêt", new String[]{"terre", "terre", "eau", "terre", "eau", "terre"}); controller.selectNextTile(tile); } } }); add(scoreLabel, BorderLayout.NORTH); add(boardView, BorderLayout.CENTER); add(nextTileButton, BorderLayout.SOUTH); } // Nouvelle méthode setController pour permettre d'assigner le contrôleur après création public void setController(GameController controller) { this.controller = controller; boardView.setController(controller); // Passe le contrôleur à BoardView } public void update(Game game) { scoreLabel.setText("Score : " + game.getScore()); boardView.refreshBoard(); } }