Ajouts du placement de la tuile initial
This commit is contained in:
@@ -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,9 +39,17 @@ 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);
|
||||||
|
@@ -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.
|
||||||
|
@@ -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