Amélioration du jeu
This commit is contained in:
@@ -12,7 +12,6 @@ import fr.monkhanny.dorfromantik.controller.TutorialController;
|
||||
import fr.monkhanny.dorfromantik.controller.GameModeController;
|
||||
import fr.monkhanny.dorfromantik.gui.GameModeSelectionPanel;
|
||||
|
||||
|
||||
import javax.swing.JFrame;
|
||||
|
||||
/**
|
||||
@@ -23,62 +22,89 @@ import javax.swing.JFrame;
|
||||
* @see MainMenuResizeController
|
||||
*/
|
||||
public class Main {
|
||||
/**
|
||||
* Méthode principale du jeu
|
||||
* @param args Tableau de String contenant les arguments passé en paramètre au programme
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
// Créer la fenêtre des modes de jeu
|
||||
JFrame gameModeFrame = new JFrame("Choix des modes de jeu - Dorfromantik");
|
||||
|
||||
// Créer la fenêtre du jeu
|
||||
JFrame gameFrame = new JFrame("Jeu - Dorfromantik");
|
||||
private static JFrame gameModeFrame;
|
||||
private static JFrame gameFrame;
|
||||
private static JFrame settingsFrame;
|
||||
private static JFrame howToPlayFrame;
|
||||
private static JFrame rewardsFrame;
|
||||
|
||||
// Créer la fenêtre des paramètres
|
||||
JFrame settingsFrame = new JFrame("Paramètres - Dorfromantik");
|
||||
// Variable statique pour savoir si la musique a été jouée
|
||||
private static boolean isMusicPlayed = false;
|
||||
|
||||
// Créer la fenêtre du tutoriel
|
||||
JFrame howToPlayFrame = new JFrame("Comment jouer ? - Dorfromantik");
|
||||
// Fonction pour réinitialiser tout le jeu
|
||||
public static void resetGame() {
|
||||
// 1. Fermer toutes les fenêtres ouvertes
|
||||
if (gameModeFrame != null) {
|
||||
gameModeFrame.dispose(); // Ferme la fenêtre du choix des modes de jeu
|
||||
}
|
||||
if (gameFrame != null) {
|
||||
gameFrame.dispose(); // Ferme la fenêtre de jeu
|
||||
}
|
||||
if (settingsFrame != null) {
|
||||
settingsFrame.dispose(); // Ferme la fenêtre des paramètres
|
||||
}
|
||||
if (howToPlayFrame != null) {
|
||||
howToPlayFrame.dispose(); // Ferme la fenêtre du tutoriel
|
||||
}
|
||||
if (rewardsFrame != null) {
|
||||
rewardsFrame.dispose(); // Ferme la fenêtre des récompenses
|
||||
}
|
||||
|
||||
// Créer la fenêtre des récompenses
|
||||
JFrame rewardsFrame = new JFrame("Récompenses - Dorfromantik");
|
||||
// 2. Réinitialiser les variables globales ou statiques si nécessaire
|
||||
Options.mainMenu = new MainMenu(); // Réinitialiser le menu principal
|
||||
|
||||
// Menu principal
|
||||
MusicPlayer.loadMusic(Musics.MAIN_MENU_MUSIC);
|
||||
MusicPlayer.playMusic();
|
||||
MainMenu mainMenu = new MainMenu();
|
||||
@SuppressWarnings("unused")
|
||||
MainMenuResizeController MainMenuResizeController = new MainMenuResizeController(mainMenu);
|
||||
@SuppressWarnings("unused")
|
||||
MainMenuButtonController MainMenuButtonController = new MainMenuButtonController(mainMenu,settingsFrame,howToPlayFrame,gameModeFrame,gameFrame, rewardsFrame);
|
||||
// 3. Lancer la musique uniquement si ce n'est pas déjà fait
|
||||
if (!isMusicPlayed) {
|
||||
MusicPlayer.loadMusic(Musics.MAIN_MENU_MUSIC); // Recharger la musique du menu principal
|
||||
MusicPlayer.playMusic(); // Reprendre la musique
|
||||
isMusicPlayed = true; // Marquer la musique comme jouée
|
||||
}
|
||||
|
||||
// 4. Créer les fenêtres à nouveau comme au début
|
||||
gameModeFrame = new JFrame("Choix des modes de jeu - Dorfromantik");
|
||||
gameFrame = new JFrame("Jeu - Dorfromantik");
|
||||
settingsFrame = new JFrame("Paramètres - Dorfromantik");
|
||||
howToPlayFrame = new JFrame("Comment jouer ? - Dorfromantik");
|
||||
rewardsFrame = new JFrame("Récompenses - Dorfromantik");
|
||||
|
||||
// Re-créer et réinitialiser les panels et les contrôleurs
|
||||
MainMenuResizeController mainMenuResizeController = new MainMenuResizeController(Options.mainMenu);
|
||||
MainMenuButtonController mainMenuButtonController = new MainMenuButtonController(Options.mainMenu, settingsFrame, howToPlayFrame, gameModeFrame, gameFrame, rewardsFrame);
|
||||
|
||||
// Fenêtre des paramètres
|
||||
CloseWindowListener settingsWindowListener = new CloseWindowListener(mainMenu, settingsFrame);
|
||||
SettingsPanel settingsPanel = new SettingsPanel(mainMenu, settingsFrame);
|
||||
CloseWindowListener settingsWindowListener = new CloseWindowListener(Options.mainMenu, settingsFrame);
|
||||
SettingsPanel settingsPanel = new SettingsPanel(Options.mainMenu, settingsFrame);
|
||||
settingsFrame.addWindowListener(settingsWindowListener);
|
||||
settingsFrame.add(settingsPanel);
|
||||
|
||||
// Fenêtre du tutoriel
|
||||
CloseWindowListener howToPlayWindowListener = new CloseWindowListener(mainMenu, howToPlayFrame);
|
||||
TutorialController tutorialController = new TutorialController(mainMenu, howToPlayFrame);
|
||||
CloseWindowListener howToPlayWindowListener = new CloseWindowListener(Options.mainMenu, howToPlayFrame);
|
||||
TutorialController tutorialController = new TutorialController(Options.mainMenu, howToPlayFrame);
|
||||
howToPlayFrame.addWindowListener(howToPlayWindowListener);
|
||||
howToPlayFrame.add(tutorialController.getTutorialPanel());
|
||||
|
||||
// Fenêtre du choix des modes de jeu
|
||||
CloseWindowListener gameModeWindowListener = new CloseWindowListener(mainMenu, gameModeFrame);
|
||||
GameModeController gameModeController = new GameModeController(gameFrame,mainMenu);
|
||||
CloseWindowListener gameModeWindowListener = new CloseWindowListener(Options.mainMenu, gameModeFrame);
|
||||
GameModeController gameModeController = new GameModeController(gameFrame, Options.mainMenu, gameModeFrame);
|
||||
GameModeSelectionPanel gameModeSelectionPanel = new GameModeSelectionPanel(gameModeController);
|
||||
gameModeFrame.addWindowListener(gameModeWindowListener);
|
||||
gameModeController.setGameModeSelectionPanel(gameModeSelectionPanel);
|
||||
gameModeFrame.add(gameModeSelectionPanel);
|
||||
|
||||
// Fenêtre des récompenses
|
||||
CloseWindowListener rewardsWindowListener = new CloseWindowListener(mainMenu, rewardsFrame);
|
||||
CloseWindowListener rewardsWindowListener = new CloseWindowListener(Options.mainMenu, rewardsFrame);
|
||||
rewardsFrame.addWindowListener(rewardsWindowListener);
|
||||
RewardsPanel rewardsPanel = new RewardsPanel();
|
||||
rewardsFrame.setContentPane(rewardsPanel);
|
||||
rewardsFrame.pack();
|
||||
|
||||
// Afficher à nouveau le menu principal
|
||||
Options.mainMenu.setVisible(true);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// Appel initial pour créer les fenêtres et démarrer le jeu
|
||||
resetGame(); // Appel à la fonction de réinitialisation
|
||||
}
|
||||
}
|
||||
|
@@ -2,6 +2,7 @@ package fr.monkhanny.dorfromantik;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import fr.monkhanny.dorfromantik.gui.MainMenu;
|
||||
|
||||
public class Options {
|
||||
|
||||
@@ -54,11 +55,15 @@ public class Options {
|
||||
|
||||
public static boolean AUTO_FOCUS = true;
|
||||
|
||||
public static final int MAX_TILE_NUMBER = 2;
|
||||
public static final int MAX_TILE_NUMBER = 50;
|
||||
|
||||
public static boolean FULL_SCREEN = false;
|
||||
|
||||
public static final float SCORE_SIZE = 30f;
|
||||
|
||||
public static long SEED = 0;
|
||||
|
||||
public static MainMenu mainMenu;
|
||||
|
||||
public static boolean isPlaying = false;
|
||||
}
|
||||
|
@@ -19,11 +19,14 @@ public class GameModeController implements ActionListener {
|
||||
private JFrame gameFrame;
|
||||
private MainMenu mainMenu;
|
||||
private Database database;
|
||||
private JFrame gameModeFrame;
|
||||
private static Board board;
|
||||
|
||||
// Constructeur sans le panneau
|
||||
public GameModeController(JFrame gameFrame, MainMenu mainMenu) {
|
||||
public GameModeController(JFrame gameFrame, MainMenu mainMenu, JFrame gameModeFrame) {
|
||||
this.gameFrame = gameFrame;
|
||||
this.mainMenu = mainMenu;
|
||||
this.gameModeFrame = gameModeFrame;
|
||||
|
||||
// Connexion à la base de données
|
||||
try {
|
||||
@@ -86,18 +89,27 @@ public class GameModeController implements ActionListener {
|
||||
}
|
||||
|
||||
private void startGame(String mode, long seed) {
|
||||
// Supprimer la potentielle ancienne instance de board
|
||||
GameModeController.board = null;
|
||||
|
||||
// Cacher la fenêtre avant de faire des modifications
|
||||
this.gameFrame.setVisible(false);
|
||||
|
||||
if (Options.FULL_SCREEN) {
|
||||
gameFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); // Set frame to full screen
|
||||
gameFrame.setUndecorated(true);
|
||||
} else {
|
||||
Dimension mainMenuSize = this.mainMenu.getSize();
|
||||
Point mainMenuLocation = this.mainMenu.getLocation();
|
||||
gameFrame.setSize(mainMenuSize);
|
||||
gameFrame.setLocation(mainMenuLocation);
|
||||
gameFrame.setUndecorated(false);
|
||||
}
|
||||
Board board = new Board(this.gameFrame,seed);
|
||||
GameModeController.board = new Board(this.gameFrame,seed);
|
||||
//this.gameModeFrame.setVisible(false);
|
||||
this.gameFrame.setVisible(true);
|
||||
this.gameFrame.add(board);
|
||||
}
|
||||
|
||||
public static Board getGameModeBoard() {
|
||||
return board;
|
||||
}
|
||||
}
|
||||
|
@@ -95,6 +95,7 @@ public class MainMenuButtonController implements ActionListener {
|
||||
|
||||
private void openRecompense() {
|
||||
adjustFrameDisplay(this.rewardsFrame);
|
||||
this.mainMenu.setVisible(false);
|
||||
this.rewardsFrame.setVisible(true);
|
||||
}
|
||||
|
||||
|
@@ -9,6 +9,7 @@ import fr.monkhanny.dorfromantik.Options;
|
||||
import fr.monkhanny.dorfromantik.enums.Biome;
|
||||
import fr.monkhanny.dorfromantik.enums.Fonts;
|
||||
import fr.monkhanny.dorfromantik.enums.TileOrientation;
|
||||
import fr.monkhanny.dorfromantik.controller.GameModeController;
|
||||
import fr.monkhanny.dorfromantik.utils.Database;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -335,7 +336,7 @@ public class Board extends JPanel{
|
||||
} catch (Exception e) {
|
||||
System.err.println("Erreur lors de la connexion à la base de données: " + e.getMessage());
|
||||
}
|
||||
GameOver gameOverPanel = new GameOver(gameFrame, currentScore, database);
|
||||
GameOver gameOverPanel = new GameOver(gameFrame, currentScore, database,Options.mainMenu);
|
||||
gameFrame.getContentPane().removeAll(); // Supprime l'ancien contenu
|
||||
gameFrame.getContentPane().add(gameOverPanel); // Ajoute le GameOver
|
||||
gameFrame.revalidate(); // Revalidate pour mettre à jour la fenêtre
|
||||
@@ -344,7 +345,6 @@ public class Board extends JPanel{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void autoReFocus(Tile newlyPlacedTile) {
|
||||
if (Options.AUTO_FOCUS) {
|
||||
// Récupérer les coordonnées de la nouvelle tuile
|
||||
|
@@ -1,6 +1,8 @@
|
||||
package fr.monkhanny.dorfromantik.game;
|
||||
|
||||
import fr.monkhanny.dorfromantik.utils.Database;
|
||||
import fr.monkhanny.dorfromantik.gui.MainMenu;
|
||||
import fr.monkhanny.dorfromantik.Main;
|
||||
import fr.monkhanny.dorfromantik.Options;
|
||||
import fr.monkhanny.dorfromantik.enums.Fonts;
|
||||
|
||||
@@ -15,9 +17,11 @@ public class GameOver extends JPanel {
|
||||
private JFrame gameFrame;
|
||||
private int finalScore;
|
||||
private Database database;
|
||||
private MainMenu mainMenu;
|
||||
|
||||
public GameOver(JFrame gameFrame, int finalScore, Database database) {
|
||||
public GameOver(JFrame gameFrame, int finalScore, Database database, MainMenu mainMenu) {
|
||||
this.gameFrame = gameFrame;
|
||||
this.mainMenu = mainMenu;
|
||||
this.finalScore = finalScore;
|
||||
this.database = database;
|
||||
|
||||
@@ -213,10 +217,9 @@ public class GameOver extends JPanel {
|
||||
}
|
||||
|
||||
// Fermer la fenêtre de jeu
|
||||
gameFrame.setVisible(false);
|
||||
Main.resetGame();
|
||||
}
|
||||
});
|
||||
|
||||
return inputPanel;
|
||||
}
|
||||
|
||||
|
@@ -36,5 +36,9 @@ public class ScoreManager {
|
||||
calculateScore();
|
||||
}
|
||||
|
||||
// Réinitialiser le score
|
||||
public void resetScore() {
|
||||
currentScore = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user