From 25a9449a38b07477f9410d5391506cea7e3724c8 Mon Sep 17 00:00:00 2001 From: incentV Date: Mon, 16 Mar 2026 16:11:07 +0100 Subject: [PATCH] changement segments et ligne --- src/linea/CampagneAutoroute.java | 5 +++-- src/linea/CampagneEspace.java | 3 ++- src/linea/CampagneOcean.java | 3 ++- src/linea/GestionnaireBDD.java | 22 +++++++++++++++------- src/linea/Jeu.java | 6 +++++- src/linea/Ligne.java | 9 +++++++-- 6 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/linea/CampagneAutoroute.java b/src/linea/CampagneAutoroute.java index bbf4b9d..e558154 100644 --- a/src/linea/CampagneAutoroute.java +++ b/src/linea/CampagneAutoroute.java @@ -23,6 +23,7 @@ public class CampagneAutoroute { double[] params = jeu.bdd.getParametresDifficulte(difficulte); double vitesse = params[0]; double pente = params[1]; + int segments = (int) params[2]; // --- 2. CRÉATION DES OBJETS @@ -31,8 +32,8 @@ public class CampagneAutoroute { FondAutoroute fond = new FondAutoroute(vitesse); jeu.ecran.ajouterObjet(fond); - // On passe aussi la vitesse (et la pente) à la ligne - jeu.laligne = new Ligne(vitesse, pente); + // On passe aussi la vitesse, la pente et les segments à la ligne + jeu.laligne = new Ligne(vitesse, pente, segments); jeu.ecran.ajouterObjet(jeu.laligne); Voiture maVoiture = new Voiture(); diff --git a/src/linea/CampagneEspace.java b/src/linea/CampagneEspace.java index 1caf26e..1906063 100644 --- a/src/linea/CampagneEspace.java +++ b/src/linea/CampagneEspace.java @@ -23,13 +23,14 @@ public class CampagneEspace { double[] params = jeu.bdd.getParametresDifficulte(difficulte); double vitesse = params[0]; double pente = params[1]; + int segments = (int) params[2]; // 1. Fond étoilé FondEspace fond = new FondEspace(); jeu.ecran.ajouterObjet(fond); // 2. Ligne de trajectoire - jeu.laligne = new Ligne(vitesse, pente); + jeu.laligne = new Ligne(vitesse, pente, segments); jeu.ecran.ajouterObjet(jeu.laligne); // 3. Cercle Espace avec physique Lunaire (niveau 1) diff --git a/src/linea/CampagneOcean.java b/src/linea/CampagneOcean.java index 2d6693e..dce8276 100644 --- a/src/linea/CampagneOcean.java +++ b/src/linea/CampagneOcean.java @@ -22,13 +22,14 @@ public class CampagneOcean { double[] params = jeuPrincipal.bdd.getParametresDifficulte(difficulte); double vitesse = params[0]; double pente = params[1]; + int segments = (int) params[2]; jeuPrincipal.ecran.viderObjets(); FondOcean monFond = new FondOcean(); jeuPrincipal.ecran.ajouterObjet(monFond); - jeuPrincipal.laligne = new Ligne(vitesse, pente); + jeuPrincipal.laligne = new Ligne(vitesse, pente, segments); jeuPrincipal.ecran.ajouterObjet(jeuPrincipal.laligne); diff --git a/src/linea/GestionnaireBDD.java b/src/linea/GestionnaireBDD.java index d9eaf67..6ebd20d 100644 --- a/src/linea/GestionnaireBDD.java +++ b/src/linea/GestionnaireBDD.java @@ -28,7 +28,14 @@ public class GestionnaireBDD { stmt.execute("CREATE TABLE IF NOT EXISTS difficultes (" + "id_difficulte INT PRIMARY KEY, " + "vitesse REAL NOT NULL, " + - "pente REAL NOT NULL)"); + "pente REAL NOT NULL, " + + "segments INT NOT NULL DEFAULT 50)"); + + try { + stmt.execute("ALTER TABLE difficultes ADD COLUMN segments INT NOT NULL DEFAULT 50"); + } catch (SQLException e) { + // Ignorer si la colonne existe déjà + } // Table pour les scores des parties stmt.execute("CREATE TABLE IF NOT EXISTS parties (" + @@ -48,10 +55,10 @@ public class GestionnaireBDD { "mot_de_passe TEXT NOT NULL)"); // Insertion des valeurs de difficulté par défaut - // L'instruction "INSERT OR IGNORE" est spécifique à SQLite et évite les doublons. - stmt.execute("INSERT OR IGNORE INTO difficultes (id_difficulte, vitesse, pente) VALUES (1, 6, 20);"); - stmt.execute("INSERT OR IGNORE INTO difficultes (id_difficulte, vitesse, pente) VALUES (2, 7, 45);"); - stmt.execute("INSERT OR IGNORE INTO difficultes (id_difficulte, vitesse, pente) VALUES (3, 8, 70);"); + // On utilise INSERT OR REPLACE pour mettre à jour les valeurs si elles existent déjà + stmt.execute("INSERT OR REPLACE INTO difficultes (id_difficulte, vitesse, pente, segments) VALUES (1, 6, 20, 50);"); + stmt.execute("INSERT OR REPLACE INTO difficultes (id_difficulte, vitesse, pente, segments) VALUES (2, 7, 45, 65);"); + stmt.execute("INSERT OR REPLACE INTO difficultes (id_difficulte, vitesse, pente, segments) VALUES (3, 8, 60, 80);"); } catch (SQLException e) { System.out.println("Erreur lors de l'initialisation de la base de données : " + e.getMessage()); @@ -100,8 +107,8 @@ public class GestionnaireBDD { } public double[] getParametresDifficulte(int difficulteId) { // Par défaut (si non trouvé), on retourne les valeurs pour la difficulté 1. - double[] params = {6.0, 20.0}; - String sql = "SELECT vitesse, pente FROM difficultes WHERE id_difficulte = ?"; + double[] params = {6.0, 20.0, 50.0}; + String sql = "SELECT vitesse, pente, segments FROM difficultes WHERE id_difficulte = ?"; try (PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setInt(1, difficulteId); @@ -110,6 +117,7 @@ public class GestionnaireBDD { if (rs.next()) { params[0] = rs.getDouble("vitesse"); params[1] = rs.getDouble("pente"); + params[2] = rs.getDouble("segments"); } } catch (SQLException e) { System.out.println("Erreur lors de la récupération des paramètres de difficulté : " + e.getMessage()); diff --git a/src/linea/Jeu.java b/src/linea/Jeu.java index bdfe22f..20e3118 100644 --- a/src/linea/Jeu.java +++ b/src/linea/Jeu.java @@ -135,6 +135,10 @@ public class Jeu implements KeyListener, ActionListener { } public void resetPartie(double vitesse, double pente) { + resetPartie(vitesse, pente, 50); // Valeur par défaut pour les segments + } + + public void resetPartie(double vitesse, double pente, int segments) { if(horloge != null) { horloge.stop(); } @@ -144,7 +148,7 @@ public class Jeu implements KeyListener, ActionListener { demiCercleAvant = new Cercle(90, -180); demiCercleArriere = new Cercle(90, 180); - laligne = new Ligne(vitesse, pente); + laligne = new Ligne(vitesse, pente, segments); demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f)); demiCercleAvant.setCouleur(new Color(1.0f, 0.2f, 0.2f)); diff --git a/src/linea/Ligne.java b/src/linea/Ligne.java index 3bb022c..a65992f 100644 --- a/src/linea/Ligne.java +++ b/src/linea/Ligne.java @@ -39,13 +39,18 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique // Constructeur de la classe //------------------------------------------------------------------------- public Ligne() { - // Par défaut, si on ne précise rien, on met vitesse 5 et pente 30 - this(5.0, 30.0); + // Par défaut, si on ne précise rien, on met vitesse 5 et pente 30 et 50 segments + this(5.0, 30.0, 50); } public Ligne(double vitesse, double penteMax) { + this(vitesse, penteMax, 50); + } + + public Ligne(double vitesse, double penteMax, int segments) { this.vitesseDefilement = vitesse; this.inclinaisonMax = penteMax; + this.nbSegments = segments; double x = 400; double y = 200;