diff --git a/TestV2/src/fr/monkhanny/dorfromantik/game/Board.java b/TestV2/src/fr/monkhanny/dorfromantik/game/Board.java index 821a80c..f89d133 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/game/Board.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/game/Board.java @@ -1,5 +1,7 @@ package fr.monkhanny.dorfromantik.game; +import fr.monkhanny.dorfromantik.listeners.GameResizeListener; + import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -16,6 +18,7 @@ public class Board extends JPanel{ private Random random; private Game game; private JFrame gameFrame; + private Tile centralTile; // Constructeur avec seed public Board(JFrame gameFrame, long seed) { @@ -26,6 +29,9 @@ public class Board extends JPanel{ // Placer une tuile centrale au démarrage initializeCentralTile(); + + // Ajouter un écouteur de redimensionnement pour redessiner les tuiles + gameFrame.addComponentListener(new GameResizeListener(this)); } @@ -33,9 +39,17 @@ public class Board extends JPanel{ int centerX = gameFrame.getWidth() / 2; int centerY = gameFrame.getHeight() / 2; - Tile centralTile = new Tile(this, centerX, centerY, 50); + this.centralTile = new Tile(this, centerX, centerY, 50); addTile(centralTile); } + + public void repositionCentralTile() { + int centerX = gameFrame.getWidth() / 2; + int centerY = gameFrame.getHeight() / 2; + + // Déplacer la tuile centrale vers le nouveau centre de la fenêtre + centralTile.setPosition(centerX, centerY); + } public void addTile(Tile tile) { tiles.add(tile); diff --git a/TestV2/src/fr/monkhanny/dorfromantik/game/Cell.java b/TestV2/src/fr/monkhanny/dorfromantik/game/Cell.java index affab58..1aa4021 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/game/Cell.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/game/Cell.java @@ -82,6 +82,21 @@ public class Cell extends JComponent { return angle; } + /** + * Permet de changer la position de la cellule. + * Cette méthode met à jour les coordonnées x et y et déplace la cellule dans le composant graphique. + * + * @param x La nouvelle coordonnée x du centre de la cellule + * @param y La nouvelle coordonnée y du centre de la cellule + */ + public void setPosition(int x, int y) { + this.x = x; + this.y = y; + + // Mettre à jour la position de la cellule sur le plateau + this.setLocation(x - radius, y - radius); + } + /** * Méthode pour redessiner la cellule si nécessaire. * Elle sera surchargée par les classes dérivées comme Tile. diff --git a/TestV2/src/fr/monkhanny/dorfromantik/listeners/GameResizeListener.java b/TestV2/src/fr/monkhanny/dorfromantik/listeners/GameResizeListener.java new file mode 100644 index 0000000..016fcdb --- /dev/null +++ b/TestV2/src/fr/monkhanny/dorfromantik/listeners/GameResizeListener.java @@ -0,0 +1,23 @@ +package fr.monkhanny.dorfromantik.listeners; + +import fr.monkhanny.dorfromantik.game.Board; + +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; + +public class GameResizeListener extends ComponentAdapter { + private Board board; + + // Constructeur qui reçoit une instance de Board pour pouvoir accéder à ses méthodes + public GameResizeListener(Board board) { + this.board = board; + } + + // Cette méthode est appelée lorsque la taille de la fenêtre change + @Override + public void componentResized(ComponentEvent e) { + // Réajuster la position de la tuile centrale lorsque la fenêtre est redimensionnée + board.repositionCentralTile(); + board.repaint(); // Demander à Board de redessiner le panneau + } +}