Modification des Tuiles + ajout tuile en haut à gauche

This commit is contained in:
2024-11-16 21:25:34 +01:00
parent 502e2c7e2e
commit 0382eac7a6
4 changed files with 47 additions and 16 deletions

View File

@@ -54,5 +54,5 @@ public class Options {
public static boolean AUTO_FOCUS = true; public static boolean AUTO_FOCUS = true;
public static final int MAX_TILE_NUMBER = 5; public static final int MAX_TILE_NUMBER = 50;
} }

View File

@@ -64,11 +64,11 @@ public class MainMenuButtonController implements ActionListener {
String command = e.getActionCommand(); String command = e.getActionCommand();
switch (command) { switch (command) {
case "Nouvelle partie": case "Jouer":
startNewGame(); startNewGame();
break; break;
case "Continuer une partie": case "Récompenses":
continueGame(); openRecompense();
break; break;
case "Comment jouer ?": case "Comment jouer ?":
showHowToPlay(); showHowToPlay();
@@ -106,8 +106,8 @@ public class MainMenuButtonController implements ActionListener {
private void continueGame() { private void openRecompense() {
System.out.println("Continuer une partie..."); System.out.println("Récompenses...");
// Logic to continue the game // Logic to continue the game
} }

View File

@@ -30,6 +30,7 @@ public class Board extends JPanel{
private double zoomFactor = 1.0; // Facteur de zoom initial private double zoomFactor = 1.0; // Facteur de zoom initial
private int offsetX = 0; // Décalage horizontal du plateau private int offsetX = 0; // Décalage horizontal du plateau
private int offsetY = 0; // Décalage vertical du plateau private int offsetY = 0; // Décalage vertical du plateau
private Tile nextTile;
// Constructeur avec seed // Constructeur avec seed
@@ -63,6 +64,13 @@ public class Board extends JPanel{
}); });
} }
private void initializeNextTile() {
int offsetX = 50; // Décalage pour la position en haut à gauche
int offsetY = 50; // Décalage pour la position en haut à gauche
this.nextTile = new Tile(this, offsetX, offsetY, 50); // Création de la nouvelle tuile
}
public void handleSpaceKeyPress() { public void handleSpaceKeyPress() {
// Calculer les dimensions totales du plateau (largeur et hauteur des tuiles) // Calculer les dimensions totales du plateau (largeur et hauteur des tuiles)
int totalWidth = 0; int totalWidth = 0;
@@ -154,6 +162,7 @@ public class Board extends JPanel{
// Calculer les positions disponibles autour de la tuile centrale // Calculer les positions disponibles autour de la tuile centrale
calculateAvailablePositions(centralTile); calculateAvailablePositions(centralTile);
initializeNextTile();
} }
public void repositionCentralTile() { public void repositionCentralTile() {
@@ -231,23 +240,28 @@ public class Board extends JPanel{
// Vérifie si la position est disponible et que la tuile n'est pas déjà placée à cet endroit // Vérifie si la position est disponible et que la tuile n'est pas déjà placée à cet endroit
if (availablePositions.contains(position) && !isTileAtPosition(position)) { if (availablePositions.contains(position) && !isTileAtPosition(position)) {
if (tiles.size() < Options.MAX_TILE_NUMBER) { if (tiles.size() < Options.MAX_TILE_NUMBER) {
Tile newTile = new Tile(this, position.x, position.y, 50); // Vérifiez si la nextTile existe, sinon on ignore
if (nextTile != null) {
// Place la nextTile à la position choisie
nextTile.setPosition(position.x, position.y);
addTile(nextTile); // Ajoute la nextTile au tableau des tuiles
calculateAvailablePositions(nextTile); // Calcule de nouvelles positions disponibles
repaint(); // Redessine le plateau
autoReFocus(nextTile);
// Initialiser une nouvelle nextTile pour le prochain tour
initializeNextTile();
// Vérifier que la tuile ne se chevauche pas avec l'ancienne tuile
if (!isTileAtPosition(new Point(newTile.getXCoord(), newTile.getYCoord()))) {
addTile(newTile);
calculateAvailablePositions(newTile); // Calculer de nouvelles positions disponibles
repaint(); // Re-dessiner le plateau
} }
autoReFocus(newTile); // Réinitialiser le zoom et le déplacement } else {
}else{
// NOMBRE DE TUILES MAXIMUM ATTEINT // NOMBRE DE TUILES MAXIMUM ATTEINT
// FIN DE LA PARTIE // FIN DE LA PARTIE
} }
} }
} }
public void autoReFocus(Tile newlyPlacedTile) { public void autoReFocus(Tile newlyPlacedTile) {
if (Options.AUTO_FOCUS) { if (Options.AUTO_FOCUS) {
// Récupérer les coordonnées de la nouvelle tuile // Récupérer les coordonnées de la nouvelle tuile
@@ -333,5 +347,22 @@ public class Board extends JPanel{
tile.drawTileAt(g,tileX-50,tileY-50,1f); tile.drawTileAt(g,tileX-50,tileY-50,1f);
} }
if (nextTile != null) {
// Calculer la position correcte de la nextTile (en tenant compte du zoom et des décalages)
int nextTileX = 0; // Position x dans l'espace global
int nextTileY = 0; // Position y dans l'espace global
// Appliquer la transformation inverse (ne pas zoomer ni déplacer la nextTile)
g2d.scale(1 / zoomFactor, 1 / zoomFactor); // Inverser le zoom
g2d.translate(-offsetX, -offsetY); // Inverser le décalage (revenir à l'espace global)
// Dessiner la nextTile à sa position d'origine (0,0)
nextTile.drawTileAt(g, nextTileX, nextTileY, 1f);
// Rétablir les transformations pour les autres éléments (tuiles existantes, etc.)
g2d.translate(offsetX / zoomFactor, offsetY / zoomFactor); // Re-appliquer le décalage
g2d.scale(zoomFactor, zoomFactor); // Re-appliquer le zoom
}
} }
} }

View File

@@ -28,8 +28,8 @@ public class ButtonPanel extends JPanel {
this.add(Box.createVerticalGlue()); this.add(Box.createVerticalGlue());
// Créer les boutons avec un style personnalisé // Créer les boutons avec un style personnalisé
newGameButton = Button.createCustomTextButton("Nouvelle partie", fontSize); newGameButton = Button.createCustomTextButton("Jouer", fontSize);
continueGameButton = Button.createCustomTextButton("Continuer une partie", fontSize); continueGameButton = Button.createCustomTextButton("Récompenses", fontSize);
howToPlayButton = Button.createCustomTextButton("Comment jouer ?", fontSize); howToPlayButton = Button.createCustomTextButton("Comment jouer ?", fontSize);
settingsButton = Button.createCustomTextButton("Paramètres", fontSize); settingsButton = Button.createCustomTextButton("Paramètres", fontSize);
exitButton = Button.createCustomTextButton("Quitter", fontSize); exitButton = Button.createCustomTextButton("Quitter", fontSize);