Ajouts du placement de la tuile initial
This commit is contained in:
@@ -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,10 +39,18 @@ 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);
|
||||
}
|
||||
|
@@ -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.
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user