diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..66259be --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "java.project.sourcePaths": [ + "linea" + ], + "java.project.referencedLibraries": [ + "sqlite-jdbc-3.49.1.0.jar" + ] +} \ No newline at end of file diff --git a/linea/linea/Jeu.java b/linea/linea/Jeu.java index 1728361..41dade6 100644 --- a/linea/linea/Jeu.java +++ b/linea/linea/Jeu.java @@ -47,11 +47,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); + } @@ -149,12 +154,11 @@ 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.jeuCommence = true; // Le jeu commence dès que la ligne est dans le cercle + this.score += 5; }else{ - this.score = this.score; + // Le score reste identique //------------------------------------------------------------------------------------------------------------------- // A FAIRE: Le jeu peut s'arrêter si la ligne n'est pas dans le cercle diff --git a/linea/linea/Ligne.java b/linea/linea/Ligne.java index bb3ffc1..8c601dc 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 new file mode 100644 index 0000000..1ff2756 --- /dev/null +++ b/linea/linea/NiveauxDataConnect.java @@ -0,0 +1,123 @@ +package linea; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; + + +// Cette classe est celle qui gère la connexion à la base de données Niveaux.db +public class NiveauxDataConnect { + //Création d'une variable de connexion à la base de données + 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 ------------------------ + // 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(); + if (conn != null) { + System.out.println("Connexion à la base de données réussie !"); + } else { + System.out.println("Connexion échouée !"); + } + } + + + // ------------------------------------------------------------------------- + // Méthode de connexion à la base de données Niveaux.db + // ------------------------------------------------------------------------- + public static Connection getConnection() { + try { + Connection conn = DriverManager.getConnection(url); + System.out.println("Connexion à la base de données réussie !"); + + // 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; + } catch (SQLException e) { + System.out.println("Erreur lors de la connexion à la base de données : " + e.getMessage()); + return null; + } + } + + + // ------------------------------------------------------------------------- + // 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, " /*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 !"); + e.printStackTrace(); + } + + } + + + // ------------------------------------------------------------------------- + // 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 diff --git a/sqlite-jdbc-3.49.1.0.jar b/sqlite-jdbc-3.49.1.0.jar new file mode 100644 index 0000000..071afa6 Binary files /dev/null and b/sqlite-jdbc-3.49.1.0.jar differ