diff --git a/TestV2/src/fr/monkhanny/dorfromantik/Options.java b/TestV2/src/fr/monkhanny/dorfromantik/Options.java index 98cb94f..72b9750 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/Options.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/Options.java @@ -54,5 +54,5 @@ public class Options { public static boolean AUTO_FOCUS = true; - public static final int MAX_TILE_NUMBER = 5; + public static final int MAX_TILE_NUMBER = 50; } diff --git a/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java b/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java index c9b31ac..7c6f52b 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/controller/MainMenuButtonController.java @@ -64,11 +64,11 @@ public class MainMenuButtonController implements ActionListener { String command = e.getActionCommand(); switch (command) { - case "Nouvelle partie": + case "Jouer": startNewGame(); break; - case "Continuer une partie": - continueGame(); + case "Récompenses": + openRecompense(); break; case "Comment jouer ?": showHowToPlay(); @@ -106,8 +106,8 @@ public class MainMenuButtonController implements ActionListener { - private void continueGame() { - System.out.println("Continuer une partie..."); + private void openRecompense() { + System.out.println("Récompenses..."); // Logic to continue the game } diff --git a/TestV2/src/fr/monkhanny/dorfromantik/game/Board.java b/TestV2/src/fr/monkhanny/dorfromantik/game/Board.java index 287a834..c3c06d3 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/game/Board.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/game/Board.java @@ -30,6 +30,7 @@ public class Board extends JPanel{ private double zoomFactor = 1.0; // Facteur de zoom initial private int offsetX = 0; // Décalage horizontal du plateau private int offsetY = 0; // Décalage vertical du plateau + private Tile nextTile; // 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() { // Calculer les dimensions totales du plateau (largeur et hauteur des tuiles) int totalWidth = 0; @@ -154,6 +162,7 @@ public class Board extends JPanel{ // Calculer les positions disponibles autour de la tuile centrale calculateAvailablePositions(centralTile); + initializeNextTile(); } 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 if (availablePositions.contains(position) && !isTileAtPosition(position)) { 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 // FIN DE LA PARTIE } } } + public void autoReFocus(Tile newlyPlacedTile) { if (Options.AUTO_FOCUS) { // 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); } + + 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 + } } } diff --git a/TestV2/src/fr/monkhanny/dorfromantik/gui/ButtonPanel.java b/TestV2/src/fr/monkhanny/dorfromantik/gui/ButtonPanel.java index 70f1dcc..e19d939 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/gui/ButtonPanel.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/gui/ButtonPanel.java @@ -28,8 +28,8 @@ public class ButtonPanel extends JPanel { this.add(Box.createVerticalGlue()); // Créer les boutons avec un style personnalisé - newGameButton = Button.createCustomTextButton("Nouvelle partie", fontSize); - continueGameButton = Button.createCustomTextButton("Continuer une partie", fontSize); + newGameButton = Button.createCustomTextButton("Jouer", fontSize); + continueGameButton = Button.createCustomTextButton("Récompenses", fontSize); howToPlayButton = Button.createCustomTextButton("Comment jouer ?", fontSize); settingsButton = Button.createCustomTextButton("Paramètres", fontSize); exitButton = Button.createCustomTextButton("Quitter", fontSize);