122 lines
4.0 KiB
Java
122 lines
4.0 KiB
Java
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.io.FileInputStream;
|
|
|
|
/**
|
|
* 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 {
|
|
|
|
/** 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() {
|
|
super("Démineur - Menu Principal");
|
|
this.setSize(LARGEUR_FENETRE, HAUTEUR_FENETRE);
|
|
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
this.setLocation(POSITION_X, POSITION_Y);
|
|
|
|
initialiserPanneauBoutons();
|
|
}
|
|
|
|
/**
|
|
* 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();
|
|
}
|
|
|
|
/**
|
|
* 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.
|
|
*/
|
|
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);
|
|
}
|
|
}
|