Derniere version du jeu
This commit is contained in:
+98
-47
@@ -1,69 +1,120 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.io.FileInputStream;
|
||||
|
||||
/**
|
||||
* Fenêtre principale affichant le menu du Démineur.
|
||||
* Fenêtre du menu principal s'affichant au lancement de l'application.
|
||||
* Permet de démarrer, reprendre ou quitter une partie.
|
||||
*/
|
||||
public class MenuPrincipal extends JFrame {
|
||||
|
||||
private JButton btnNouvellePartie;
|
||||
private JButton btnReprendre;
|
||||
private JButton btnQuitter;
|
||||
|
||||
/** Largeur de la fenêtre en pixels. */
|
||||
private static final int LARGEUR_FENETRE = 400;
|
||||
|
||||
/** Hauteur de la fenêtre en pixels. */
|
||||
private static final int HAUTEUR_FENETRE = 300;
|
||||
|
||||
/** Position X initiale de la fenêtre sur l'écran. */
|
||||
private static final int POSITION_X = 100;
|
||||
|
||||
/** Position Y initiale de la fenêtre sur l'écran. */
|
||||
private static final int POSITION_Y = 100;
|
||||
|
||||
/** Nombre de lignes pour la disposition des boutons. */
|
||||
private static final int LIGNES_GRILLE = 3;
|
||||
|
||||
/** Nombre de colonnes pour la disposition des boutons. */
|
||||
private static final int COLONNES_GRILLE = 1;
|
||||
|
||||
/** Bouton permettant de lancer une nouvelle partie personnalisée. */
|
||||
private JButton boutonNouvellePartie;
|
||||
|
||||
/** Bouton permettant de recharger la dernière sauvegarde trouvée. */
|
||||
private JButton boutonReprendre;
|
||||
|
||||
/** Bouton permettant de fermer complètement l'application. */
|
||||
private JButton boutonQuitter;
|
||||
|
||||
/**
|
||||
* Constructeur du menu principal.
|
||||
* Initialise l'interface graphique en respectant les méthodes du cours.
|
||||
*/
|
||||
public MenuPrincipal() {
|
||||
// Configuration de la fenêtre (héritée de JFrame)
|
||||
super("Démineur - Menu Principal");
|
||||
this.setSize(300, 250);
|
||||
this.setSize(LARGEUR_FENETRE, HAUTEUR_FENETRE);
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
// Mise en page principale
|
||||
this.setLayout(new BorderLayout());
|
||||
this.setLocation(POSITION_X, POSITION_Y);
|
||||
|
||||
// Titre en haut
|
||||
JLabel etiquetteTitre = new JLabel("DÉMINEUR");
|
||||
etiquetteTitre.setHorizontalAlignment(JLabel.CENTER);
|
||||
this.add(etiquetteTitre, BorderLayout.NORTH);
|
||||
|
||||
// Panneau pour les boutons au centre
|
||||
JPanel panneauBoutons = new JPanel();
|
||||
panneauBoutons.setLayout(new GridLayout(3, 1)); // 3 lignes, 1 colonne
|
||||
|
||||
// Création des boutons
|
||||
this.btnNouvellePartie = new JButton("Commencer une nouvelle partie");
|
||||
this.btnReprendre = new JButton("Reprendre la partie précédente");
|
||||
this.btnQuitter = new JButton("Quitter");
|
||||
|
||||
// Désactivation du bouton "Reprendre" par défaut (comme demandé dans le sujet)
|
||||
this.btnReprendre.setEnabled(false);
|
||||
|
||||
// Ajout des boutons au panneau
|
||||
panneauBoutons.add(this.btnNouvellePartie);
|
||||
panneauBoutons.add(this.btnReprendre);
|
||||
panneauBoutons.add(this.btnQuitter);
|
||||
|
||||
// Ajout du panneau au centre de la fenêtre
|
||||
this.add(panneauBoutons, BorderLayout.CENTER);
|
||||
|
||||
// Connexion avec l'observateur (le contrôleur)
|
||||
ControleurMenu observateur = new ControleurMenu(this);
|
||||
this.btnNouvellePartie.addActionListener(observateur);
|
||||
this.btnReprendre.addActionListener(observateur);
|
||||
this.btnQuitter.addActionListener(observateur);
|
||||
initialiserPanneauBoutons();
|
||||
}
|
||||
|
||||
// --- Accesseurs pour que l'observateur puisse identifier les boutons ---
|
||||
public JButton getBtnNouvellePartie() { return this.btnNouvellePartie; }
|
||||
public JButton getBtnReprendre() { return this.btnReprendre; }
|
||||
public JButton getBtnQuitter() { return this.btnQuitter; }
|
||||
/**
|
||||
* Crée le panneau, instancie les boutons et les ajoute à l'interface.
|
||||
*/
|
||||
private void initialiserPanneauBoutons() {
|
||||
JPanel panneauBoutons = new JPanel();
|
||||
panneauBoutons.setLayout(new GridLayout(LIGNES_GRILLE, COLONNES_GRILLE));
|
||||
|
||||
this.boutonNouvellePartie = new JButton("Nouvelle Partie");
|
||||
this.boutonReprendre = new JButton("Reprendre une partie");
|
||||
this.boutonQuitter = new JButton("Quitter");
|
||||
|
||||
panneauBoutons.add(this.boutonNouvellePartie);
|
||||
ajouterBoutonReprendreSiSauvegarde(panneauBoutons);
|
||||
panneauBoutons.add(this.boutonQuitter);
|
||||
|
||||
this.add(panneauBoutons, BorderLayout.CENTER);
|
||||
|
||||
connecterControleur();
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode principale pour lancer le programme.
|
||||
* @param args arguments de la ligne de commande (inutilisés)
|
||||
* Tente de lire le fichier de sauvegarde. Si le fichier existe,
|
||||
* le bouton "Reprendre" est ajouté au panneau. Sinon, l'erreur est ignorée.
|
||||
* @param panneau le panneau graphique qui contiendra le bouton.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
private void ajouterBoutonReprendreSiSauvegarde(JPanel panneau) {
|
||||
try {
|
||||
FileInputStream testLecture = new FileInputStream("sauvegarde.dat");
|
||||
testLecture.close();
|
||||
panneau.add(this.boutonReprendre);
|
||||
} catch (Exception exception) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Instancie le contrôleur et l'attache aux différents boutons.
|
||||
*/
|
||||
private void connecterControleur() {
|
||||
ControleurMenu controleur = new ControleurMenu(this);
|
||||
this.boutonNouvellePartie.addActionListener(controleur);
|
||||
this.boutonReprendre.addActionListener(controleur);
|
||||
this.boutonQuitter.addActionListener(controleur);
|
||||
}
|
||||
|
||||
/**
|
||||
* Accède au bouton de nouvelle partie.
|
||||
* @return le bouton "Nouvelle Partie".
|
||||
*/
|
||||
public JButton getBoutonNouvellePartie() { return this.boutonNouvellePartie; }
|
||||
|
||||
/**
|
||||
* Accède au bouton de reprise de partie.
|
||||
* @return le bouton "Reprendre une partie".
|
||||
*/
|
||||
public JButton getBoutonReprendre() { return this.boutonReprendre; }
|
||||
|
||||
/**
|
||||
* Accède au bouton pour quitter le jeu.
|
||||
* @return le bouton "Quitter".
|
||||
*/
|
||||
public JButton getBoutonQuitter() { return this.boutonQuitter; }
|
||||
|
||||
/**
|
||||
* Point d'entrée principal du programme.
|
||||
* @param arguments les arguments passés en ligne de commande.
|
||||
*/
|
||||
public static void main(String[] arguments) {
|
||||
MenuPrincipal menu = new MenuPrincipal();
|
||||
menu.setVisible(true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user