Modification des Tuiles + ajout tuile en haut à gauche
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user