Ajouts du placement de la tuile initial

This commit is contained in:
2024-11-16 14:05:30 +01:00
parent 7efc59c862
commit 25d00a5303
3 changed files with 53 additions and 1 deletions

View File

@@ -1,5 +1,7 @@
package fr.monkhanny.dorfromantik.game; package fr.monkhanny.dorfromantik.game;
import fr.monkhanny.dorfromantik.listeners.GameResizeListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
@@ -16,6 +18,7 @@ public class Board extends JPanel{
private Random random; private Random random;
private Game game; private Game game;
private JFrame gameFrame; private JFrame gameFrame;
private Tile centralTile;
// Constructeur avec seed // Constructeur avec seed
public Board(JFrame gameFrame, long seed) { public Board(JFrame gameFrame, long seed) {
@@ -26,6 +29,9 @@ public class Board extends JPanel{
// Placer une tuile centrale au démarrage // Placer une tuile centrale au démarrage
initializeCentralTile(); initializeCentralTile();
// Ajouter un écouteur de redimensionnement pour redessiner les tuiles
gameFrame.addComponentListener(new GameResizeListener(this));
} }
@@ -33,10 +39,18 @@ public class Board extends JPanel{
int centerX = gameFrame.getWidth() / 2; int centerX = gameFrame.getWidth() / 2;
int centerY = gameFrame.getHeight() / 2; int centerY = gameFrame.getHeight() / 2;
Tile centralTile = new Tile(this, centerX, centerY, 50); this.centralTile = new Tile(this, centerX, centerY, 50);
addTile(centralTile); 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) { public void addTile(Tile tile) {
tiles.add(tile); tiles.add(tile);
} }

View File

@@ -82,6 +82,21 @@ public class Cell extends JComponent {
return angle; 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. * Méthode pour redessiner la cellule si nécessaire.
* Elle sera surchargée par les classes dérivées comme Tile. * Elle sera surchargée par les classes dérivées comme Tile.

View File

@@ -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
}
}