Amélioration du mode auto focus
This commit is contained in:
@@ -69,7 +69,7 @@ public class Board extends JPanel{
|
|||||||
gameFrame.addKeyListener(new PauseGame(gameFrame, game));
|
gameFrame.addKeyListener(new PauseGame(gameFrame, game));
|
||||||
gameFrame.setFocusable(true);
|
gameFrame.setFocusable(true);
|
||||||
|
|
||||||
this.remainingTilesIndicator = new RemainingTilesIndicator(Options.MAX_TILE_NUMBER);
|
this.remainingTilesIndicator = new RemainingTilesIndicator(Options.MAX_TILE_NUMBER - 1);
|
||||||
|
|
||||||
// Remplacer l'adaptateur anonyme par notre classe CustomMouseMotionAdapter
|
// Remplacer l'adaptateur anonyme par notre classe CustomMouseMotionAdapter
|
||||||
this.addMouseMotionListener(new CustomMouseMotionAdapter(this));
|
this.addMouseMotionListener(new CustomMouseMotionAdapter(this));
|
||||||
@@ -288,12 +288,11 @@ public class Board extends JPanel{
|
|||||||
* @param position La position où ajouter la tuile
|
* @param position La position où ajouter la tuile
|
||||||
*/
|
*/
|
||||||
public void placeTileAtPosition(Point position) {
|
public void placeTileAtPosition(Point position) {
|
||||||
// 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 - 1) {
|
||||||
// Vérifiez si la nextTile existe, sinon on ignore
|
// Placer une nouvelle tuile normalement
|
||||||
if (nextTile != null) {
|
if (nextTile != null) {
|
||||||
remainingTilesIndicator.setRemainingTiles(Options.MAX_TILE_NUMBER - tiles.size());
|
remainingTilesIndicator.setRemainingTiles(Options.MAX_TILE_NUMBER - 1 - tiles.size());
|
||||||
|
|
||||||
// Place la nextTile à la position choisie
|
// Place la nextTile à la position choisie
|
||||||
nextTile.setPosition(position.x, position.y);
|
nextTile.setPosition(position.x, position.y);
|
||||||
@@ -305,14 +304,26 @@ public class Board extends JPanel{
|
|||||||
// Initialiser une nouvelle nextTile pour le prochain tour
|
// Initialiser une nouvelle nextTile pour le prochain tour
|
||||||
initializeNextTile();
|
initializeNextTile();
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
// Pour la dernière tuile
|
||||||
|
if (nextTile != null) {
|
||||||
|
// Place la dernière tuile et mettre à jour le score
|
||||||
|
nextTile.setPosition(position.x, position.y);
|
||||||
|
addTile(nextTile);
|
||||||
|
calculateAvailablePositions(nextTile);
|
||||||
|
repaint();
|
||||||
|
|
||||||
|
// Mise à jour de l'indicateur de tuiles restantes
|
||||||
|
remainingTilesIndicator.setRemainingTiles(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fin de la partie
|
||||||
try {
|
try {
|
||||||
this.database = new Database();
|
this.database = new Database();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.err.println("Erreur lors de la connexion à la base de données: " + e.getMessage());
|
System.err.println("Erreur lors de la connexion à la base de données: " + e.getMessage());
|
||||||
}
|
}
|
||||||
GameOver gameOverPanel = new GameOver(gameFrame, currentScore, database,Options.mainMenu);
|
GameOver gameOverPanel = new GameOver(gameFrame, currentScore, database, Options.mainMenu);
|
||||||
gameFrame.getContentPane().removeAll(); // Supprime l'ancien contenu
|
gameFrame.getContentPane().removeAll(); // Supprime l'ancien contenu
|
||||||
gameFrame.getContentPane().add(gameOverPanel); // Ajoute le GameOver
|
gameFrame.getContentPane().add(gameOverPanel); // Ajoute le GameOver
|
||||||
gameFrame.revalidate(); // Revalidate pour mettre à jour la fenêtre
|
gameFrame.revalidate(); // Revalidate pour mettre à jour la fenêtre
|
||||||
@@ -321,6 +332,7 @@ public class Board extends JPanel{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
@@ -330,8 +342,9 @@ public class Board extends JPanel{
|
|||||||
// Calculer les décalages nécessaires pour centrer la tuile
|
// Calculer les décalages nécessaires pour centrer la tuile
|
||||||
// Nous utilisons la largeur et la hauteur du panneau de jeu (getWidth et getHeight)
|
// Nous utilisons la largeur et la hauteur du panneau de jeu (getWidth et getHeight)
|
||||||
// Divisé par 2 pour centrer la nouvelle tuile dans la fenêtre.
|
// Divisé par 2 pour centrer la nouvelle tuile dans la fenêtre.
|
||||||
int targetOffsetX = (int) ((getWidth() - newlyPlacedTile.getRadius() * 2) / 2 - newlyPlacedTileX);
|
int targetOffsetX = (int) ((getWidth() - newlyPlacedTile.getRadius() * 2 * zoomFactor) / 2 - newlyPlacedTileX * zoomFactor);
|
||||||
int targetOffsetY = (int) ((getHeight() - newlyPlacedTile.getRadius() * 2) / 2 - newlyPlacedTileY);
|
int targetOffsetY = (int) ((getHeight() - newlyPlacedTile.getRadius() * 2 * zoomFactor) / 2 - newlyPlacedTileY * zoomFactor);
|
||||||
|
|
||||||
|
|
||||||
TilePanningTransition panningTransition = new TilePanningTransition(this, targetOffsetX, targetOffsetY, 15);
|
TilePanningTransition panningTransition = new TilePanningTransition(this, targetOffsetX, targetOffsetY, 15);
|
||||||
panningTransition.start();
|
panningTransition.start();
|
||||||
|
Reference in New Issue
Block a user