add icon and app name

This commit is contained in:
2026-03-27 14:43:31 +01:00
parent fc92f720c3
commit 5d755ff29e
14 changed files with 85 additions and 26 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.

After

Width:  |  Height:  |  Size: 815 KiB

View File

@@ -1,24 +1,55 @@
import java.awt.*; import java.awt.*;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*; import javax.swing.*;
public class CadreDeConnexion extends JFrame { public class CadreDeConnexion extends JFrame {
//--------------------------------------------------------------------------
// Méthode peremttant de charger(récupérer) l'image îcone depuis Ressources
// -------------------------------------------------------------------------
private Image chargerImageDepuisRessource(String cheminRessource) {
try {
URL url = getClass().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;
}
public CadreDeConnexion() { public CadreDeConnexion() {
// 1. Configuration de base
setTitle("Connexion Linea"); // Image de fond de la page de connexion
Background panelBackground = null;
// 1. On change l'icône de CETTE fenêtre (this)
Image imageConnexion = chargerImageDepuisRessource("/images/icone.png");
// Si l'image est différent de null, on modifie l'icone de notre application
// Et on l'applique comme image de fond
if (imageConnexion != null) {
this.setIconImage(imageConnexion);
panelBackground = new Background(imageConnexion);
}
// 2. Configuration de base
setTitle("ZENITH FLUX");
setSize(800, 600); setSize(800, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE); setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null); // Centre la fenêtre setLocationRelativeTo(null); // Centre la fenêtre
// 2. Style du panneau principal (Gris foncé) // 3. Style du panneau principal (Gris foncé)
JPanel panel = new JPanel(new GridBagLayout()); // JPanel panel = new JPanel(new GridBagLayout());
panel.setBackground(new Color(30, 30, 30)); JPanel panel = new ZoneDessin(panelBackground);
add(panel); panel.setLayout(new GridBagLayout());
// Conteneur pour les éléments (pour les empiler verticalement) // Conteneur pour les éléments (pour les empiler verticalement)
Box box = Box.createVerticalBox(); Box box = Box.createVerticalBox();
// 3. Création des composants // 4. Création des composants
JLabel titre = new JLabel("CONNEXION"); JLabel titre = new JLabel("CONNEXION");
titre.setForeground(Color.WHITE); titre.setForeground(Color.WHITE);
titre.setFont(new Font("Arial", Font.BOLD, 24)); titre.setFont(new Font("Arial", Font.BOLD, 24));
@@ -36,7 +67,7 @@ public class CadreDeConnexion extends JFrame {
loginBtn.setFocusPainted(false); loginBtn.setFocusPainted(false);
loginBtn.setAlignmentX(Component.CENTER_ALIGNMENT); loginBtn.setAlignmentX(Component.CENTER_ALIGNMENT);
// 4. Ajout des composants avec des espaces (Struts) // 5. Ajout des composants avec des espaces (Struts)
box.add(titre); box.add(titre);
box.add(Box.createVerticalStrut(30)); // Espace box.add(Box.createVerticalStrut(30)); // Espace
box.add(new JLabel("<html><font color='white'>Utilisateur :</font></html>")); box.add(new JLabel("<html><font color='white'>Utilisateur :</font></html>"));
@@ -56,8 +87,9 @@ public class CadreDeConnexion extends JFrame {
box.add(createBtn); box.add(createBtn);
panel.add(box); // Ajoute la boîte au centre du GridBagLayout panel.add(box); // Ajoute la boîte au centre du GridBagLayout
setContentPane(panel); // Branche enfin le panneau personnalisé à la fenêtre
// 5. Logique du bouton // 6. Logique du bouton
loginBtn.addActionListener(e -> { loginBtn.addActionListener(e -> {
String user = userField.getText(); String user = userField.getText();
String pass = new String(passField.getPassword()); String pass = new String(passField.getPassword());
@@ -78,9 +110,16 @@ public class CadreDeConnexion extends JFrame {
createFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); createFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
createFrame.setLocationRelativeTo(null); createFrame.setLocationRelativeTo(null);
JPanel createPanel = new JPanel(new GridBagLayout()); Image imageCreation = chargerImageDepuisRessource("/images/icone.png");
createPanel.setBackground(new Color(30, 30, 30)); if (imageCreation != null) {
createFrame.add(createPanel); createFrame.setIconImage(imageCreation);
}
Background panelBackgroundCreation = (imageCreation != null) ? new Background(imageCreation) : null;
JPanel createPanel = new ZoneDessin(panelBackgroundCreation);
// JPanel createPanel = new JPanel(new GridBagLayout());
createPanel.setLayout(new GridBagLayout());
createFrame.setContentPane(createPanel);
Box createBox = Box.createVerticalBox(); Box createBox = Box.createVerticalBox();

View File

@@ -11,6 +11,7 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
// PROPRIETES // PROPRIETES
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
private double gravite = 10.0;
protected double rayon = 30; protected double rayon = 30;
protected double depY = 0; // déplacement protected double depY = 0; // déplacement
@@ -74,6 +75,12 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl
return y; return y;
} }
//-------------------------------------------------------------------------
// Méthod epour mettre à jour la gravité du cercle depuis la classe
//-------------------------------------------------------------------------
public void setGravite(double nouvelleGravite) {
this.gravite = nouvelleGravite;
}
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
// Méthode qui note que up a été appuyée // Méthode qui note que up a été appuyée
// -> le booléen permet de ne plus être tributaire // -> le booléen permet de ne plus être tributaire
@@ -116,14 +123,14 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl
// pas est à prendre comme un "delta t" // pas est à prendre comme un "delta t"
// chute libre // chute libre
vitesse = vitesse + 9.81 * pas; vitesse = vitesse + gravite * pas;
// impulsion // impulsion
if (montee==true) { if (montee==true) {
vitesse = vitesse - impulsion *pas; vitesse = vitesse - impulsion *pas;
} }
depY = 1/2 * 9.81 + vitesse * pas; depY = 1/2 * gravite + vitesse * pas;
if (depY<-10) { if (depY<-10) {
depY=-10; depY=-10;
@@ -139,7 +146,7 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl
// Méthode pour mettre un plafond et un sol au cercle // Méthode pour mettre un plafond et un sol au cercle
public void verification_cercle_out(){ public void verification_cercle_out(){
if(y < plafond || (y + rayon) >= sol ) { if(y < plafond || (y + rayon) >= sol ) {
vitesse = -vitesse; vitesse =-vitesse;
} }
} }

View File

@@ -84,13 +84,14 @@ public class Jeu implements KeyListener, ActionListener{
if( n1 != null ){ if( n1 != null ){
try { try {
// On charge l'mage du niveau 1 // On charge l'image du niveau 1
java.net.URL url = Jeu.class.getResource("/" + n1.getImage()); java.net.URL url = Jeu.class.getResource("/" + n1.getImage());
if(url != null){ if(url != null){
java.awt.Image img = javax.imageio.ImageIO.read(url); java.awt.Image img = javax.imageio.ImageIO.read(url);
premierFond = new Background(img); premierFond = new Background(img);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
} }
} }
@@ -236,6 +237,18 @@ public class Jeu implements KeyListener, ActionListener{
this.dernierSegmentValide = null; this.dernierSegmentValide = null;
this.ecran.partiePerdue = false; this.ecran.partiePerdue = false;
// Formule : Gravité de base - (Niveau * incrément)
// Niveau 1 : 10.0 + (1 * 1.50) = 8.5 (poids normal)
// Niveau 4 : 10.0 + (4 * 1.50) = 4.0 (Très léger et plane)
double graviteNiveau = 10.0 - (this.niveauEnCours.getId() * 1.5);
// Sécurité: La gravité du niveau ne doit pas descendre en dessous de 2
// Sinon le cercle ne retomberait plus jamais
if(graviteNiveau < 2.0){
graviteNiveau = 2.0;
}
this.demiCercleAvant.setGravite(graviteNiveau);
this.demiCercleArriere.setGravite(graviteNiveau);
// On corse le jeu avec son ID // On corse le jeu avec son ID
//On applique les paramètres aux options de jeu //On applique les paramètres aux options de jeu
@@ -269,7 +282,7 @@ public class Jeu implements KeyListener, ActionListener{
// Petite pause avec un message // Petite pause avec un message
horloge.stop(); horloge.stop();
JOptionPane.showMessageDialog(fenetre, "Niveau terminé ! Préparez-vous pour le niveau suivant ;)"); JOptionPane.showMessageDialog(fenetre, "Niveau terminé ! Préparez-vous pour le niveau suivant 😉 OU PERDEZ 😈");
chargerNiveau(idNiveauActuel); chargerNiveau(idNiveauActuel);
horloge.start(); horloge.start();

View File

@@ -124,24 +124,24 @@ public class NiveauxDataConnect {
// le jeu est lancé // le jeu est lancé
// Pour corser le jeu, on utilisera l'id du niveau qui nous servira de difficulté // Pour corser le jeu, on utilisera l'id du niveau qui nous servira de difficulté
// --------------------------------Niveau 1 -------------------------------- // --------------------------------Niveau 1 --------------------------------
// nom = "Facile", vitesse_ligne = 5, nb_segments = 50, image = "images\ciel.jpeg", multiplicateur_score = 1, couleur_cercle = "bleu" // nom = "Facile", vitesse_ligne = 5, nb_segments = 50, image = "images\ciel.jpeg", multiplicateur_score = 10, couleur_cercle = "bleu"
// --------------------------------Niveau 2 -------------------------------- // --------------------------------Niveau 2 --------------------------------
// nom = "intermédaire", vitesse_ligne = 7, nb_segments = 100, image = "images\montagnes.jpg", multiplicateur_score = 2, couleur_cercle = "gris" // nom = "intermédaire", vitesse_ligne = 7, nb_segments = 100, image = "images\montagnes.jpg", multiplicateur_score = 20, couleur_cercle = "gris"
// --------------------------------Niveau 3 -------------------------------- // --------------------------------Niveau 3 --------------------------------
// nom = "Difficile", vitesse_ligne = 9, nb_segments = 100, image = "images\volcan.jpg", multiplicateur_score = 3, couleur_cercle = "marron" // nom = "Difficile", vitesse_ligne = 9, nb_segments = 100, image = "images\volcan.jpg", multiplicateur_score = 30, couleur_cercle = "marron"
// --------------------------------Niveau 4 -------------------------------- // --------------------------------Niveau 4 --------------------------------
// nom = "Ultime", vitesse_ligne = 10, nb_segments = 150, image = "images\espace.jpg", multiplicateur_score = 4, couleur_cercle = "violet" // nom = "Ultime", vitesse_ligne = 10, nb_segments = 150, image = "images\espace.jpg", multiplicateur_score = 50, couleur_cercle = "violet"
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
public static void insererNiveau(Connection conn) { public static void insererNiveau(Connection conn) {
String query1 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) " String query1 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) "
+ "VALUES('Facile', 5, 50, 'images/ciel.jpeg', 1, '#0000FF');"; + "VALUES('Facile', 5, 50, 'images/ciel.jpeg', 10, '#0000FF');";
String query2 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) " String query2 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) "
+ "VALUES('Intermédiaire', 7, 100, 'images/montagnes.jpg', 2, '#808080');"; + "VALUES('Intermédiaire', 7, 100, 'images/montagnes.jpg', 20, '#808080');";
String query3 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) " String query3 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) "
+ "VALUES('Difficile', 9, 100, 'images/volcan.jpg', 3, '#8B4513');"; + "VALUES('Difficile', 9, 100, 'images/volcan.jpg', 30, '#8B4513');";
String query4 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) " String query4 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) "
+ "VALUES('Ultime', 10, 150, 'images/espace.jpg', 4, '#9400D3');"; + "VALUES('Ultime', 10, 150, 'images/espace.jpg', 50, '#9400D3');";
try (Statement stmt = conn.createStatement()) { try (Statement stmt = conn.createStatement()) {
stmt.execute(query1); stmt.execute(query1);

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 815 KiB