This commit is contained in:
2026-03-27 16:19:41 +01:00
22 changed files with 48 additions and 94 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

@@ -1,11 +1,26 @@
import javax.imageio.ImageIO;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.net.URL;
import java.util.List; import java.util.List;
public class BoutonsManager { public class BoutonsManager {
private static Image chargerImageDepuisRessource(String cheminRessource) {
try {
URL url = BoutonsManager.class.getResource(cheminRessource);
if (url != null) {
return ImageIO.read(url);
}
System.err.println("Ressource introuvable : " + cheminRessource);
} catch (Exception e) {
System.err.println("Erreur chargement image : " + e.getMessage());
}
return null;
}
// Méthode pour créer le bouton des scores utilisateur // Méthode pour créer le bouton des scores utilisateur
public static JButton creerBoutonScores(JFrame fenetre, int utilisateurId) { public static JButton creerBoutonScores(JFrame fenetre, int utilisateurId) {
JButton boutonScores = new JButton("Voir mes scores"); JButton boutonScores = new JButton("Voir mes scores");
@@ -58,9 +73,13 @@ public class BoutonsManager {
int userId = GestionBDD.verifierConnexion(user, pass); int userId = GestionBDD.verifierConnexion(user, pass);
if (userId != -1) { if (userId != -1) {
// On ferme la fenêtre de connexion avant d'ouvrir l'écran suivant.
cadre.dispose(); cadre.dispose();
Jeu jeu = new Jeu(userId);
jeu.demarrer(); // Après une connexion réussie, on affiche le menu principal
// au lieu de lancer le jeu directement.
MenuPrincipal menuPrincipal = new MenuPrincipal(userId, user);
menuPrincipal.setVisible(true);
} else { } else {
JOptionPane.showMessageDialog(cadre, "Acces refuse"); JOptionPane.showMessageDialog(cadre, "Acces refuse");
} }
@@ -83,9 +102,16 @@ public class BoutonsManager {
createFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); createFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
createFrame.setLocationRelativeTo(null); createFrame.setLocationRelativeTo(null);
JPanel createPanel = new JPanel(new GridBagLayout()); Background panelBackgroundCreation = null;
createPanel.setBackground(new Color(30, 30, 30)); Image imageCreation = chargerImageDepuisRessource("/images/icone.png");
createFrame.add(createPanel); if (imageCreation != null) {
createFrame.setIconImage(imageCreation);
panelBackgroundCreation = new Background(imageCreation);
}
JPanel createPanel = new ZoneDessin(panelBackgroundCreation);
createPanel.setLayout(new GridBagLayout());
createFrame.setContentPane(createPanel);
Box createBox = Box.createVerticalBox(); Box createBox = Box.createVerticalBox();

View File

@@ -83,92 +83,6 @@ public class CadreDeConnexion extends JFrame {
panel.add(box); // Ajoute la boîte au centre du GridBagLayout panel.add(box); // Ajoute la boîte au centre du GridBagLayout
// 5. Logique du bouton
loginBtn.addActionListener(e -> {
String user = userField.getText();
String pass = new String(passField.getPassword());
int userId = GestionBDD.verifierConnexion(user, pass);
if (userId != -1) {
dispose();
Jeu jeu = new Jeu(userId);
jeu.demarrer();
} else {
JOptionPane.showMessageDialog(this, "Acces refuse");
}
});
createBtn.addActionListener(evt -> {
JFrame createFrame = new JFrame("Creation de compte");
createFrame.setSize(800, 600);
createFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
createFrame.setLocationRelativeTo(null);
// On recharge la même image pour la fenêtre de création de compte
// afin de lui donner à la fois l'icône et le fond d'écran.
Background panelBackgroundCreation = null;
Image imageCreation = chargerImageDepuisRessource("/images/icone.png");
if (imageCreation != null) {
createFrame.setIconImage(imageCreation);
panelBackgroundCreation = new Background(imageCreation);
}
// Même principe que pour la page de connexion : le fond est dessiné par ZoneDessin
JPanel createPanel = new ZoneDessin(panelBackgroundCreation);
createPanel.setLayout(new GridBagLayout());
createFrame.setContentPane(createPanel);
Box createBox = Box.createVerticalBox();
JLabel createTitre = new JLabel("CREATION DE COMPTE");
createTitre.setForeground(Color.WHITE);
createTitre.setFont(new Font("Arial", Font.BOLD, 24));
createTitre.setAlignmentX(Component.CENTER_ALIGNMENT);
JTextField newUserField = new JTextField(15);
newUserField.setMaximumSize(new Dimension(250, 30));
JPasswordField newPassField = new JPasswordField(15);
newPassField.setMaximumSize(new Dimension(250, 30));
JButton createAccountBtn = new JButton("Créer");
createAccountBtn.setBackground(new Color(70, 130, 180));
createAccountBtn.setForeground(Color.WHITE);
createAccountBtn.setFocusPainted(false);
createAccountBtn.setAlignmentX(Component.CENTER_ALIGNMENT);
createBox.add(createTitre);
createBox.add(Box.createVerticalStrut(30));
createBox.add(new JLabel("<html><font color='white'>Nouvel utilisateur :</font></html>"));
createBox.add(newUserField);
createBox.add(Box.createVerticalStrut(15));
createBox.add(new JLabel("<html><font color='white'>Mot de passe :</font></html>"));
createBox.add(newPassField);
createBox.add(Box.createVerticalStrut(30));
createBox.add(createAccountBtn);
createPanel.add(createBox);
createAccountBtn.addActionListener(e -> {
String u = newUserField.getText().trim();
String p = new String(newPassField.getPassword());
if (u.isEmpty() || p.isEmpty()) {
JOptionPane.showMessageDialog(createFrame, "Utilisateur et mot de passe requis");
return;
}
boolean ok = GestionBDD.creerUtilisateur(u, p);
if (ok) {
JOptionPane.showMessageDialog(createFrame, "Compte cree avec succes.");
createFrame.dispose();
} else {
JOptionPane.showMessageDialog(createFrame, "Échec : le nom d'utilisateur existe deja ou erreur.");
}
});
createFrame.setVisible(true);
});
setVisible(true); setVisible(true);
} }
} }

View File

@@ -1,5 +1,7 @@
import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
// ★★★ CLASSE CREEE PAR L'UTILISATEUR ★★★ // ★★★ CLASSE CREEE PAR L'UTILISATEUR ★★★
// Fichier : MenuPrincipal.java (nouveau fichier) // Fichier : MenuPrincipal.java (nouveau fichier)
@@ -21,8 +23,18 @@ public class MenuPrincipal extends JFrame {
// Sauvegarde l'ID pour l'utiliser lors des appels à la base de données // Sauvegarde l'ID pour l'utiliser lors des appels à la base de données
this.utilisateurId = utilisateurId; this.utilisateurId = utilisateurId;
// Charge la même icône que les autres fenêtres de l'application.
try {
URL urlIcone = getClass().getResource("/images/icone.png");
if (urlIcone != null) {
setIconImage(ImageIO.read(urlIcone));
}
} catch (Exception e) {
System.err.println("Impossible de charger l'icône du menu principal : " + e.getMessage());
}
// Configuration de la fenêtre // Configuration de la fenêtre
setTitle("Menu Principal - Linea"); // Titre de la fenêtre setTitle("ZENITH FLUX"); // Titre de la fenêtre
setSize(800, 600); // Dimensions de la fenêtre setSize(800, 600); // Dimensions de la fenêtre
setDefaultCloseOperation(EXIT_ON_CLOSE); // Quitter l'app à la fermeture setDefaultCloseOperation(EXIT_ON_CLOSE); // Quitter l'app à la fermeture
setLocationRelativeTo(null); // Centre la fenêtre setLocationRelativeTo(null); // Centre la fenêtre
@@ -109,5 +121,7 @@ public class MenuPrincipal extends JFrame {
// Ajoute la boîte au panneau principal // Ajoute la boîte au panneau principal
panel.add(box); panel.add(box);
setVisible(true);
} }
} }