diff --git a/projet_linea/Niveaux.db b/projet_linea/Niveaux.db index 38c8221..909dd82 100644 Binary files a/projet_linea/Niveaux.db and b/projet_linea/Niveaux.db differ diff --git a/projet_linea/bin/CadreDeConnexion.class b/projet_linea/bin/CadreDeConnexion.class index 72bf9ee..a052710 100644 Binary files a/projet_linea/bin/CadreDeConnexion.class and b/projet_linea/bin/CadreDeConnexion.class differ diff --git a/projet_linea/bin/Cercle.class b/projet_linea/bin/Cercle.class index 50abd3c..091ff1f 100644 Binary files a/projet_linea/bin/Cercle.class and b/projet_linea/bin/Cercle.class differ diff --git a/projet_linea/bin/Jeu.class b/projet_linea/bin/Jeu.class index 9872cd2..32e21e9 100644 Binary files a/projet_linea/bin/Jeu.class and b/projet_linea/bin/Jeu.class differ diff --git a/projet_linea/bin/Niveau.class b/projet_linea/bin/Niveau.class index ff7abfa..b7f0f89 100644 Binary files a/projet_linea/bin/Niveau.class and b/projet_linea/bin/Niveau.class differ diff --git a/projet_linea/bin/NiveauxDataConnect.class b/projet_linea/bin/NiveauxDataConnect.class index 7751f2b..d7ac474 100644 Binary files a/projet_linea/bin/NiveauxDataConnect.class and b/projet_linea/bin/NiveauxDataConnect.class differ diff --git a/projet_linea/bin/bddInit.class b/projet_linea/bin/bddInit.class index 3780038..22b4134 100644 Binary files a/projet_linea/bin/bddInit.class and b/projet_linea/bin/bddInit.class differ diff --git a/projet_linea/bin/images/icone.png b/projet_linea/bin/images/icone.png new file mode 100644 index 0000000..d728eca Binary files /dev/null and b/projet_linea/bin/images/icone.png differ diff --git a/projet_linea/src/CadreDeConnexion.java b/projet_linea/src/CadreDeConnexion.java index 0cbb2eb..96cca0c 100644 --- a/projet_linea/src/CadreDeConnexion.java +++ b/projet_linea/src/CadreDeConnexion.java @@ -1,24 +1,55 @@ import java.awt.*; +import java.net.URL; +import javax.imageio.ImageIO; import javax.swing.*; 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() { - // 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); setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationRelativeTo(null); // Centre la fenêtre - // 2. Style du panneau principal (Gris foncé) - JPanel panel = new JPanel(new GridBagLayout()); - panel.setBackground(new Color(30, 30, 30)); - add(panel); + // 3. Style du panneau principal (Gris foncé) + // JPanel panel = new JPanel(new GridBagLayout()); + JPanel panel = new ZoneDessin(panelBackground); + panel.setLayout(new GridBagLayout()); // Conteneur pour les éléments (pour les empiler verticalement) Box box = Box.createVerticalBox(); - // 3. Création des composants + // 4. Création des composants JLabel titre = new JLabel("CONNEXION"); titre.setForeground(Color.WHITE); titre.setFont(new Font("Arial", Font.BOLD, 24)); @@ -36,7 +67,7 @@ public class CadreDeConnexion extends JFrame { loginBtn.setFocusPainted(false); 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(Box.createVerticalStrut(30)); // Espace box.add(new JLabel("Utilisateur :")); @@ -56,8 +87,9 @@ public class CadreDeConnexion extends JFrame { box.add(createBtn); 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 -> { String user = userField.getText(); String pass = new String(passField.getPassword()); @@ -78,9 +110,16 @@ public class CadreDeConnexion extends JFrame { createFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); createFrame.setLocationRelativeTo(null); - JPanel createPanel = new JPanel(new GridBagLayout()); - createPanel.setBackground(new Color(30, 30, 30)); - createFrame.add(createPanel); + Image imageCreation = chargerImageDepuisRessource("/images/icone.png"); + if (imageCreation != null) { + 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(); diff --git a/projet_linea/src/Cercle.java b/projet_linea/src/Cercle.java index cea411a..fd0ac2e 100644 --- a/projet_linea/src/Cercle.java +++ b/projet_linea/src/Cercle.java @@ -10,7 +10,8 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl //------------------------------------------------------------------------- // PROPRIETES - //------------------------------------------------------------------------- + //------------------------------------------------------------------------- + private double gravite = 10.0; protected double rayon = 30; 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; } + //------------------------------------------------------------------------- + // 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 // -> 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" // chute libre - vitesse = vitesse + 9.81 * pas; + vitesse = vitesse + gravite * pas; // impulsion if (montee==true) { vitesse = vitesse - impulsion *pas; } - depY = 1/2 * 9.81 + vitesse * pas; + depY = 1/2 * gravite + vitesse * pas; if (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 public void verification_cercle_out(){ if(y < plafond || (y + rayon) >= sol ) { - vitesse = -vitesse; + vitesse =-vitesse; } } diff --git a/projet_linea/src/Jeu.java b/projet_linea/src/Jeu.java index eca9cf5..2d8b365 100644 --- a/projet_linea/src/Jeu.java +++ b/projet_linea/src/Jeu.java @@ -84,13 +84,14 @@ public class Jeu implements KeyListener, ActionListener{ if( n1 != null ){ try { - // On charge l'mage du niveau 1 + // On charge l'image du niveau 1 java.net.URL url = Jeu.class.getResource("/" + n1.getImage()); if(url != null){ java.awt.Image img = javax.imageio.ImageIO.read(url); premierFond = new Background(img); } } catch (Exception e) { + e.printStackTrace(); } } @@ -236,6 +237,18 @@ public class Jeu implements KeyListener, ActionListener{ this.dernierSegmentValide = null; 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 applique les paramètres aux options de jeu @@ -269,7 +282,7 @@ public class Jeu implements KeyListener, ActionListener{ // Petite pause avec un message 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); horloge.start(); diff --git a/projet_linea/src/NiveauxDataConnect.java b/projet_linea/src/NiveauxDataConnect.java index c00ea93..b549612 100644 --- a/projet_linea/src/NiveauxDataConnect.java +++ b/projet_linea/src/NiveauxDataConnect.java @@ -124,24 +124,24 @@ public class NiveauxDataConnect { // le jeu est lancé // Pour corser le jeu, on utilisera l'id du niveau qui nous servira de difficulté // --------------------------------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 -------------------------------- - // 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 -------------------------------- - // 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 -------------------------------- - // 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) { 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) " - + "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) " - + "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) " - + "VALUES('Ultime', 10, 150, 'images/espace.jpg', 4, '#9400D3');"; + + "VALUES('Ultime', 10, 150, 'images/espace.jpg', 50, '#9400D3');"; try (Statement stmt = conn.createStatement()) { stmt.execute(query1); diff --git a/projet_linea/src/ZoneDessin.class b/projet_linea/src/ZoneDessin.class deleted file mode 100644 index 3a893aa..0000000 Binary files a/projet_linea/src/ZoneDessin.class and /dev/null differ diff --git a/projet_linea/src/images/icone.png b/projet_linea/src/images/icone.png new file mode 100644 index 0000000..d728eca Binary files /dev/null and b/projet_linea/src/images/icone.png differ