creation page avant debut du jeu
This commit is contained in:
@@ -14,7 +14,7 @@ public class Jeu implements KeyListener, ActionListener{
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
// Ecran : instance de ZoneDessin, qui contiendra tous les objets graphiques
|
||||
// On ne vapas créer directement l'écran car ça va créer un flash
|
||||
// On ne va pas créer directement l'écran car ça va créer un flash
|
||||
// Dès le lancement du jeu avec l'image de fond par défaut et l'imga du niveau
|
||||
// et les animera
|
||||
protected ZoneDessin ecran;
|
||||
|
||||
113
projet_linea/src/MenuPrincipal.java
Normal file
113
projet_linea/src/MenuPrincipal.java
Normal file
@@ -0,0 +1,113 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
// ★★★ CLASSE CREEE PAR L'UTILISATEUR ★★★
|
||||
// Fichier : MenuPrincipal.java (nouveau fichier)
|
||||
// Objectif : afficher un menu d'accueil APRES la connexion réussie
|
||||
// Remplace : l'ancien démarrage direct du jeu après connexion
|
||||
// Fonctionnalités : 2 boutons (Lancer le jeu / Voir mes scores)
|
||||
|
||||
// Fenêtre du menu principal affichée après la connexion
|
||||
public class MenuPrincipal extends JFrame {
|
||||
|
||||
// ID de l'utilisateur connecté
|
||||
private final int utilisateurId;
|
||||
|
||||
// Constructeur du menu principal
|
||||
// Affiche un écran d'accueil avec deux options : "Lancer le jeu" et "Voir mes scores"
|
||||
// ★★★ CONSTRUCTEUR CREE PAR L'UTILISATEUR ★★★
|
||||
// Nouveau : il n'existait pas avant, crée le menu principal
|
||||
public MenuPrincipal(int utilisateurId, String userName) {
|
||||
// Sauvegarde l'ID pour l'utiliser lors des appels à la base de données
|
||||
this.utilisateurId = utilisateurId;
|
||||
|
||||
// Configuration de la fenêtre
|
||||
setTitle("Menu Principal - Linea"); // Titre de la fenêtre
|
||||
setSize(800, 600); // Dimensions de la fenêtre
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE); // Quitter l'app à la fermeture
|
||||
setLocationRelativeTo(null); // Centre la fenêtre
|
||||
|
||||
// Crée le panneau principal avec un fond sombre
|
||||
JPanel panel = new JPanel(new GridBagLayout()); // GridBagLayout pour centrage
|
||||
panel.setBackground(new Color(30, 30, 30)); // Fond gris très foncé
|
||||
add(panel);
|
||||
|
||||
// Crée une boîte verticale pour disposer les éléments de haut en bas
|
||||
Box box = Box.createVerticalBox(); // Disposition verticale
|
||||
box.setAlignmentX(Component.CENTER_ALIGNMENT); // Centré horizontalement
|
||||
|
||||
// Crée un titre de bienvenue personalisé avec le nom de l'utilisateur
|
||||
JLabel titre = new JLabel("Bienvenue, " + userName + " !");
|
||||
titre.setForeground(Color.WHITE); // Texte blanc
|
||||
titre.setFont(new Font("Arial", Font.BOLD, 26)); // Police Arial gras 26pt
|
||||
titre.setAlignmentX(Component.CENTER_ALIGNMENT); // Centré
|
||||
|
||||
// Crée le bouton "Lancer le jeu" pour démarrer une partie
|
||||
JButton demarrer = new JButton("Lancer le jeu");
|
||||
demarrer.setBackground(new Color(70, 130, 180)); // Couleur bleu acier
|
||||
demarrer.setForeground(Color.WHITE); // Texte blanc
|
||||
demarrer.setFocusPainted(false); // Pas de bordure au focus
|
||||
demarrer.setMaximumSize(new Dimension(220, 40)); // Dimension du bouton
|
||||
demarrer.setAlignmentX(Component.CENTER_ALIGNMENT); // Centré horizontalement
|
||||
|
||||
|
||||
// Au clic, ferme ce menu et lance le jeu
|
||||
// ★★★ ACTION MODIFIEE PAR L'UTILISATEUR ★★★
|
||||
// Lance le jeu APRES fermeture du menu (ajout du menu principal)
|
||||
demarrer.addActionListener(e -> {
|
||||
// Ferme la fenêtre de menu
|
||||
dispose();
|
||||
// Crée une instance du jeu avec l'ID utilisateur (authentifié)
|
||||
Jeu jeu = new Jeu(utilisateurId);
|
||||
// Démarre l'affichage et l'initialisation du jeu
|
||||
jeu.demarrer();
|
||||
});
|
||||
|
||||
// Crée le bouton "Voir mes scores" pour afficher l'historique
|
||||
// ★★★ NOUVEAU BOUTON PAR L'UTILISATEUR ★★★
|
||||
// Nouvelle fonctionnalité : permet de voir les scores AVANT de lancer le jeu
|
||||
// Utilise les méthodes : GestionBDD.recupererScoresUtilisateur()
|
||||
// GestionBDD.recupererMeilleurScoreUtilisateur()
|
||||
JButton scores = new JButton("Voir mes scores");
|
||||
scores.setBackground(new Color(70, 130, 180)); // Couleur bleu acier (même que demarrer)
|
||||
scores.setForeground(Color.WHITE); // Texte blanc
|
||||
scores.setFocusPainted(false); // Pas de bordure au focus
|
||||
scores.setMaximumSize(new Dimension(220, 40)); // Dimension du bouton
|
||||
scores.setAlignmentX(Component.CENTER_ALIGNMENT); // Centré horizontalement
|
||||
|
||||
|
||||
// Au clic, récupère et affiche les scores depuis la base de données
|
||||
// ★★★ ACTION PAR L'UTILISATEUR ★★★
|
||||
// Nouvelle action : afficher les scores historiques du joueur dans une popup
|
||||
// Récupère : tous les scores + le meilleur score
|
||||
scores.addActionListener(e -> {
|
||||
// Récupère la liste de tous les scores de l'utilisateur depuis la BD
|
||||
java.util.List<Integer> scoreList = GestionBDD.recupererScoresUtilisateur(utilisateurId);
|
||||
// Récupère aussi le meilleur score (score maximum) depuis la BD
|
||||
int meilleurScore = GestionBDD.recupererMeilleurScoreUtilisateur(utilisateurId);
|
||||
|
||||
// Construit un message texte avec tous les scores à afficher
|
||||
StringBuilder message = new StringBuilder();
|
||||
message.append("Meilleur score : ").append(meilleurScore).append("\n\n");
|
||||
message.append("Tous les scores :\n");
|
||||
|
||||
// Ajoute chaque score à la liste, un par un
|
||||
for (int s : scoreList) {
|
||||
message.append(s).append("\n");
|
||||
}
|
||||
|
||||
// Affiche les scores dans une boîte de dialogue popup
|
||||
JOptionPane.showMessageDialog(this, message.toString(), "Mes Scores", JOptionPane.INFORMATION_MESSAGE);
|
||||
});
|
||||
|
||||
// Ajoute tous les éléments dans la boîte
|
||||
box.add(titre);
|
||||
box.add(Box.createVerticalStrut(40)); // Espace de 40 pixels après le titre
|
||||
box.add(demarrer);
|
||||
box.add(Box.createVerticalStrut(15)); // Espace de 15 pixels entre les deux boutons
|
||||
box.add(scores);
|
||||
|
||||
// Ajoute la boîte au panneau principal
|
||||
panel.add(box);
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Reference in New Issue
Block a user