creation page avant debut du jeu

This commit is contained in:
2026-03-27 15:38:51 +01:00
parent d8b2ef6e49
commit 676c59b0d7
11 changed files with 114 additions and 1 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -14,7 +14,7 @@ public class Jeu implements KeyListener, ActionListener{
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
// Ecran : instance de ZoneDessin, qui contiendra tous les objets graphiques // 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 // Dès le lancement du jeu avec l'image de fond par défaut et l'imga du niveau
// et les animera // et les animera
protected ZoneDessin ecran; protected ZoneDessin ecran;

View 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.