diff --git a/linea/linea/Jeu.java b/linea/linea/Jeu.java index ab27c9c..6597704 100644 --- a/linea/linea/Jeu.java +++ b/linea/linea/Jeu.java @@ -35,6 +35,9 @@ public class Jeu implements KeyListener, ActionListener{ // un label qui servira à afficher le score protected JLabel labScore; + + // un label qui servira à afficher le niveau du jeu + protected JLabel labLevel; //------------------------------------------------------------------------- @@ -46,11 +49,16 @@ public class Jeu implements KeyListener, ActionListener{ //------------------------------------------------------------------------- public Jeu(){ // Gestion du score : a réactiver en fin de TP, inutile au début - + // Ajout du niveau du jeu + labLevel = new JLabel(); + labLevel.setText("

niveau : 1

"); + labLevel.setBounds(20, 50, 200, 50); + ecran.add(labLevel); labScore = new JLabel(); labScore.setText("

score : 0

"); labScore.setBounds(20, 0, 200, 50); ecran.add(labScore); + } @@ -148,9 +156,9 @@ public class Jeu implements KeyListener, ActionListener{ public void actionPerformed(ActionEvent e) { this.ecran.traiterBoucleAnimation(); boolean verification = this.laLigne.estDansCercle(this.demiCercleAvant); - // A FAIRE : si la ligne est dans le cercle, on augmente le score, sinon on le remet à 0 + if(verification){ - this.score += 10; + this.score += 5; }else{ // Le score reste identique diff --git a/linea/linea/Ligne.java b/linea/linea/Ligne.java index 0d5102e..f3f4967 100644 --- a/linea/linea/Ligne.java +++ b/linea/linea/Ligne.java @@ -91,6 +91,7 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique // Principe : // on parcourt tous les segments et on décale chacun de 10 pixels (par exemple) // vers la gauche + // On modifiera cette méthode en fonction du niveau de jeu for(Segment s: this.listeSegments){ s.x -= 5; } @@ -102,7 +103,7 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique // Principe: On a le rayon du cercle qui ne varie pas // On parcourt tous les points du segment courant // Et on calcule la distance entre chacun de ces points et le centre du cercle - // Si la distance est supérieure au rayon du cercle, alors le point n'est pas dans le cercle + // Si la distance est supérieure au rayon du cercle, alors le point n'est pas dans le cercle(GAME OVER) // Sinon le segment courant est dans le cercle // Remarque: On a définit la position du cercle grâce à son centre // Autrement dit, les coordonnées du centre du cercle sont la position du cercle diff --git a/linea/linea/NiveauxDataConnect.java b/linea/linea/NiveauxDataConnect.java index 317eb64..1ff2756 100644 --- a/linea/linea/NiveauxDataConnect.java +++ b/linea/linea/NiveauxDataConnect.java @@ -12,7 +12,14 @@ public class NiveauxDataConnect { private static final String url = "jdbc:sqlite:Niveaux.db"; private static boolean tablesCreees = false; // Variable pour vérifier si les tables ont été créées - //Constructeur de la classe + + + // ------------- Constructeur de la classe ------------------------ + // Il initialise la connexion à la base de données + // Il crée la table niveau si elle n'existe pas déjà + // Il insérer les niveaux dans la table niveau directement + // Pour éviter à le faire à chaque fois que le jeu est lancé + // ---------------------------------------------------------------- public NiveauxDataConnect() throws ClassNotFoundException { // Initialisation de la connexion à la base de données Connection conn = getConnection(); @@ -23,7 +30,10 @@ public class NiveauxDataConnect { } } - //Méthode de connexion à la base de données Niveaux.db + + // ------------------------------------------------------------------------- + // Méthode de connexion à la base de données Niveaux.db + // ------------------------------------------------------------------------- public static Connection getConnection() { try { Connection conn = DriverManager.getConnection(url); @@ -31,8 +41,11 @@ public class NiveauxDataConnect { // Vérifier si les tables ont déjà été créées pour éviter de les recréer à chaque connexion if (!tablesCreees) { + // Créer la table niveau si elle n'existe pas déjà CreerTableNiveaux(conn); tablesCreees = true; // Marquer les tables comme créées + // Insérer les niveaux dans la table niveau + insererNiveau(conn); } return conn; @@ -42,19 +55,25 @@ public class NiveauxDataConnect { } } - //Méthode pour créer la table Niveaux si elle n'existe pas déjà + + // ------------------------------------------------------------------------- + // Méthode pour créer la table Niveaux si elle n'existe pas déjà + // ------------------------------------------------------------------------- private static void CreerTableNiveaux(Connection conn) { String sql = "CREATE TABLE IF NOT EXISTS niveau( " + "id INTEGER PRIMARY KEY AUTOINCREMENT, " - + "nom TEXT NOT NULL, " - + "vitesse_ligne INTEGER NOT NULL," /*vitesse de la ligne*/ - + "nb_segments INTEGER NOT NULL," /*nombre de segments à faire passer au joueur pour réussir le niveau*/ - +");" ; + + "nom TEXT NOT NULL, " /*nom du niveau*/ + + "vitesse_ligne INTEGER NOT NULL, " /*vitesse de la ligne*/ + + "nb_segments INTEGER NOT NULL, " /*nombre de segments à faire passer au joueur pour réussir le niveau*/ + + "image TEXT NOT NULL, " /*image du niveau*/ + + "multiplicateur_score INTEGER, " /*multiplier le score en fonction du niveau*/ + + "couleur_cercle TEXT NOT NULL, " /*Couleur du cercle en fonctiond du niveau */ + +");" ; try (Statement stmt = conn.createStatement()) { stmt.execute(sql); - + stmt.close(); } catch (SQLException e) { System.err.println("Erreur lors de la création de la table Niveaux : " + e.getMessage()); System.out.println("Connexion échouée !"); @@ -64,4 +83,41 @@ public class NiveauxDataConnect { } + // ------------------------------------------------------------------------- + // Méthode pour insérer les niveaux dans la base de données + // Les niveaux sont connus à l'avance et sont insérés directement + // dans la base de données pour éviter de les insérer à chaque fois que + // le jeu est lancé + // --------------------------------Niveau 1 -------------------------------- + // nom = "Facile", vitesse_ligne = 5, nb_segments = 50, image = "images\ciel.jpeg", multiplicateur_score = 1, couleur_cercle = "bleu" + // --------------------------------Niveau 2 -------------------------------- + // nom = "intermédaire", vitesse_ligne = 2, nb_segments = 100, image = "images\montagnes.jpg", multiplicateur_score = 2, couleur_cercle = "gris" + // --------------------------------Niveau 3 -------------------------------- + // nom = "Difficile", vitesse_ligne = 3, nb_segments = 100, image = "images\volcan.jpg", multiplicateur_score = 3, couleur_cercle = "marron" + // --------------------------------Niveau 4 -------------------------------- + // nom = "Ultime", vitesse_ligne = 4, nb_segments = 150, image = "images\espace.jpg", multiplicateur_score = 4, 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');"; + + String query2 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) " + + "VALUES('Intermédiaire', 2, 100, 'images\\montagnes.jpg', 2, '#808080');"; + String query3 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) " + + "VALUES('Difficile', 3, 100, 'images\\volcan.jpg', 3, '#8B4513');"; + String query4 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) " + + "VALUES('Ultime', 4, 150, 'images\\espace.jpg', 4, '#9400D3');"; + + try (Statement stmt = conn.createStatement()) { + stmt.execute(query1); + stmt.execute(query2); + stmt.execute(query3); + stmt.execute(query4); + stmt.close(); + } catch (SQLException e) { + System.err.println("Erreur lors de l'insertion des niveaux : " + e.getMessage()); + } + } + + } diff --git a/linea/linea/images/ciel.jpeg b/linea/linea/images/ciel.jpeg new file mode 100644 index 0000000..c1b95ae Binary files /dev/null and b/linea/linea/images/ciel.jpeg differ diff --git a/linea/linea/images/espace.jpg b/linea/linea/images/espace.jpg new file mode 100644 index 0000000..faca99a Binary files /dev/null and b/linea/linea/images/espace.jpg differ diff --git a/linea/linea/images/montagnes.jpg b/linea/linea/images/montagnes.jpg new file mode 100644 index 0000000..a68840a Binary files /dev/null and b/linea/linea/images/montagnes.jpg differ diff --git a/linea/linea/images/volcan.jpg b/linea/linea/images/volcan.jpg new file mode 100644 index 0000000..3d9bd0c Binary files /dev/null and b/linea/linea/images/volcan.jpg differ