Rajout Javadoc
This commit is contained in:
parent
b49023fd3d
commit
1200894234
@ -11,6 +11,11 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* La classe GameController gère le flux de jeu et la logique principale, y compris le placement de tuiles,
|
||||||
|
* la mise à jour de la grille et le calcul du score. Elle prend en charge l'initialisation du jeu,
|
||||||
|
* la génération de tuiles et la gestion de la fin de la partie.
|
||||||
|
*/
|
||||||
public class GameController implements TilePlacer {
|
public class GameController implements TilePlacer {
|
||||||
private Map<Point, HexagonTile> hexagonMap;
|
private Map<Point, HexagonTile> hexagonMap;
|
||||||
private Set<Point> availablePositions;
|
private Set<Point> availablePositions;
|
||||||
@ -27,6 +32,19 @@ public class GameController implements TilePlacer {
|
|||||||
private int seriesId;
|
private int seriesId;
|
||||||
private GameEndListener gameEndListener;
|
private GameEndListener gameEndListener;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur de la classe GameController.
|
||||||
|
* Initialise les composants de la partie, y compris le contexte de jeu, la série de tuiles,
|
||||||
|
* et le gestionnaire de fin de partie.
|
||||||
|
*
|
||||||
|
* @param gameContext le contexte de jeu contenant l'état de la grille
|
||||||
|
* @param gridPanel le panneau d'affichage de la grille
|
||||||
|
* @param nextTilePreview la tuile d'aperçu pour la prochaine tuile
|
||||||
|
* @param scoreLabel le label d'affichage du score
|
||||||
|
* @param seriesId l'identifiant de la série de tuiles
|
||||||
|
* @param gameEndListener le listener pour gérer la fin de la partie
|
||||||
|
*/
|
||||||
public GameController(GameContext gameContext, JPanel gridPanel, HexagonTile nextTilePreview, JLabel scoreLabel, int seriesId, GameEndListener gameEndListener) {
|
public GameController(GameContext gameContext, JPanel gridPanel, HexagonTile nextTilePreview, JLabel scoreLabel, int seriesId, GameEndListener gameEndListener) {
|
||||||
this.seriesId = seriesId;
|
this.seriesId = seriesId;
|
||||||
this.gameContext = gameContext;
|
this.gameContext = gameContext;
|
||||||
@ -43,12 +61,24 @@ public class GameController implements TilePlacer {
|
|||||||
updatePreview();
|
updatePreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Charge une série de tuiles spécifiée par l'identifiant de série.
|
||||||
|
*
|
||||||
|
* @param idSeries l'identifiant de la série à charger
|
||||||
|
*/
|
||||||
public void loadSeries(int idSeries) {
|
public void loadSeries(int idSeries) {
|
||||||
currentTiles = dbManager.getTilesBySeries(idSeries);
|
currentTiles = dbManager.getTilesBySeries(idSeries);
|
||||||
tileIndex = 0;
|
tileIndex = 0;
|
||||||
System.out.println("Série " + idSeries + " chargée avec " + currentTiles.size() + " tuiles.");
|
System.out.println("Série " + idSeries + " chargée avec " + currentTiles.size() + " tuiles.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Place une tuile à la position spécifiée dans la grille, si la position est disponible.
|
||||||
|
*
|
||||||
|
* @param position la position de la grille pour placer la tuile
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void placeTile(Point position) {
|
public void placeTile(Point position) {
|
||||||
if (availablePositions.contains(position)) {
|
if (availablePositions.contains(position)) {
|
||||||
@ -87,6 +117,9 @@ public class GameController implements TilePlacer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Termine la partie, enregistre le score final et notifie le listener de fin de partie.
|
||||||
|
*/
|
||||||
private void endGame() {
|
private void endGame() {
|
||||||
int finalScore = scoreGameContext.getScore();
|
int finalScore = scoreGameContext.getScore();
|
||||||
|
|
||||||
@ -99,6 +132,11 @@ public class GameController implements TilePlacer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialise le jeu en plaçant une tuile initiale au centre de la grille et en configurant la vue.
|
||||||
|
*
|
||||||
|
* @param cameraController le contrôleur de caméra pour gérer les déplacements de vue
|
||||||
|
*/
|
||||||
public void initializeGame(CameraController cameraController) {
|
public void initializeGame(CameraController cameraController) {
|
||||||
generateNextTile();
|
generateNextTile();
|
||||||
Tile initialTile = getNextTile();
|
Tile initialTile = getNextTile();
|
||||||
@ -115,6 +153,13 @@ public class GameController implements TilePlacer {
|
|||||||
generateNextTile();
|
generateNextTile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Place la tuile initiale dans la grille et initialise les positions adjacentes comme disponibles.
|
||||||
|
*
|
||||||
|
* @param position la position centrale pour la tuile initiale
|
||||||
|
* @param cameraController le contrôleur de caméra pour appliquer l'offset de vue
|
||||||
|
* @param tile la tuile initiale à placer
|
||||||
|
*/
|
||||||
public void placeInitialTile(Point position, CameraController cameraController, Tile tile) {
|
public void placeInitialTile(Point position, CameraController cameraController, Tile tile) {
|
||||||
if (tile == null) {
|
if (tile == null) {
|
||||||
System.out.println("Erreur : tuile initiale non définie.");
|
System.out.println("Erreur : tuile initiale non définie.");
|
||||||
@ -132,6 +177,15 @@ public class GameController implements TilePlacer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ajoute une nouvelle tuile hexagonale à la grille à la position spécifiée.
|
||||||
|
*
|
||||||
|
* @param position la position de la tuile dans la grille
|
||||||
|
* @param panel le panneau contenant la grille
|
||||||
|
* @param hexSize la taille de l'hexagone
|
||||||
|
* @param cameraController le contrôleur de caméra pour ajuster la position
|
||||||
|
* @param tile la tuile à placer ou null pour un espace réservé
|
||||||
|
*/
|
||||||
public void addHexagonTile(Point position, JPanel panel, int hexSize, CameraController cameraController, Tile tile) {
|
public void addHexagonTile(Point position, JPanel panel, int hexSize, CameraController cameraController, Tile tile) {
|
||||||
if (position == null || panel == null) {
|
if (position == null || panel == null) {
|
||||||
System.out.println("Erreur : position ou panel est null");
|
System.out.println("Erreur : position ou panel est null");
|
||||||
@ -166,6 +220,9 @@ public class GameController implements TilePlacer {
|
|||||||
panel.repaint();
|
panel.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Génère la prochaine tuile de la série et met à jour l'aperçu.
|
||||||
|
*/
|
||||||
public void generateNextTile() {
|
public void generateNextTile() {
|
||||||
if (tileIndex < currentTiles.size()) {
|
if (tileIndex < currentTiles.size()) {
|
||||||
nextTile = currentTiles.get(tileIndex++);
|
nextTile = currentTiles.get(tileIndex++);
|
||||||
@ -176,6 +233,9 @@ public class GameController implements TilePlacer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Met à jour l'aperçu de la tuile suivante.
|
||||||
|
*/
|
||||||
private void updatePreview() {
|
private void updatePreview() {
|
||||||
if (nextTilePreview != null) {
|
if (nextTilePreview != null) {
|
||||||
if (nextTile != null) {
|
if (nextTile != null) {
|
||||||
@ -187,10 +247,21 @@ public class GameController implements TilePlacer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retourne la prochaine tuile à placer.
|
||||||
|
*
|
||||||
|
* @return la prochaine tuile ou null si aucune tuile n'est disponible
|
||||||
|
*/
|
||||||
public Tile getNextTile() {
|
public Tile getNextTile() {
|
||||||
return nextTile;
|
return nextTile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retourne les positions adjacentes à une position donnée dans la grille.
|
||||||
|
*
|
||||||
|
* @param position la position centrale
|
||||||
|
* @return un tableau de positions adjacentes
|
||||||
|
*/
|
||||||
private Point[] getAdjacentPositions(Point position) {
|
private Point[] getAdjacentPositions(Point position) {
|
||||||
if (position.x % 2 == 0) {
|
if (position.x % 2 == 0) {
|
||||||
return new Point[]{
|
return new Point[]{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user