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