Compare commits

...

3 Commits

Author SHA1 Message Date
84df35373a resolve conflicts problems 2026-03-27 15:48:22 +01:00
dcd2d9dfe0 init: resolve conflicts 2026-03-27 15:41:50 +01:00
676c59b0d7 creation page avant debut du jeu 2026-03-27 15:38:51 +01:00
21 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.

Binary file not shown.

Binary file not shown.

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
// 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;

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);
}
}