diff --git a/.idea/libraries/sqlite_jdbc_3_45_1_0.xml b/.idea/libraries/sqlite_jdbc_3_45_1_0.xml
new file mode 100644
index 0000000..807f484
--- /dev/null
+++ b/.idea/libraries/sqlite_jdbc_3_45_1_0.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projet-dev.iml b/projet-dev.iml
index d851184..80415a1 100644
--- a/projet-dev.iml
+++ b/projet-dev.iml
@@ -7,5 +7,6 @@
+
\ No newline at end of file
diff --git a/src/GestionnaireScore.java b/src/GestionnaireScore.java
new file mode 100644
index 0000000..5b937b7
--- /dev/null
+++ b/src/GestionnaireScore.java
@@ -0,0 +1,51 @@
+package linea;
+
+import java.sql.*;
+
+public class GestionnaireScore {
+ private String url = "jdbc:sqlite:linea_scores.db";
+
+ public GestionnaireScore() {
+ // Au démarrage, on crée la table si elle n'existe pas
+ try (Connection conn = DriverManager.getConnection(url)) {
+ String sql = "CREATE TABLE IF NOT EXISTS scores (" +
+ "id INTEGER PRIMARY KEY AUTOINCREMENT," +
+ "nom TEXT," +
+ "points INTEGER);";
+ Statement stmt = conn.createStatement();
+ stmt.execute(sql);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void sauvegarderScore(String nom, int points) {
+ String sql = "INSERT INTO scores(nom, points) VALUES(?, ?)";
+ try (Connection conn = DriverManager.getConnection(url);
+ PreparedStatement pstmt = conn.prepareStatement(sql)) {
+ pstmt.setString(1, nom);
+ pstmt.setInt(2, points);
+ pstmt.executeUpdate();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public String getTopScores() {
+ StringBuilder sb = new StringBuilder("--- TOP 10 SCORES ---\n");
+ String sql = "SELECT nom, points FROM scores ORDER BY points DESC LIMIT 10";
+
+ try (Connection conn = DriverManager.getConnection(url);
+ Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(sql)) {
+
+ while (rs.next()) {
+ sb.append(rs.getString("nom")).append(" : ")
+ .append(rs.getInt("points")).append("\n");
+ }
+ } catch (SQLException e) {
+ return "Erreur lors de la lecture des scores.";
+ }
+ return sb.toString();
+ }
+}
\ No newline at end of file
diff --git a/src/Jeu.java b/src/Jeu.java
index 92e1c86..9705bb0 100644
--- a/src/Jeu.java
+++ b/src/Jeu.java
@@ -30,6 +30,8 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
protected JLabel labScore;
protected int vies = 3;
+ protected GestionnaireScore gestionnaireBDD = new GestionnaireScore();
+
protected int compteurFrames = 0;
protected boolean enCollision = false;
protected boolean estGameOver = false;
@@ -40,6 +42,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
protected JFrame fenetre;
protected MenuPrincipal menu;
+
public Jeu() {
labScore = new JLabel();
labScore.setForeground(Color.WHITE);
@@ -165,6 +168,10 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
estGameOver = true;
ecran.arreter();
labGameOver.setVisible(true);
+
+ if (pseudo != null && !pseudo.isEmpty()) {
+ gestionnaireBDD.sauvegarderScore(pseudo, (int) score);
+ }
}
labScore.setText("
Score : " + (int) score + " | Vies : " + vies + "
");
@@ -211,4 +218,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
@Override
public void mouseExited(MouseEvent e) {
}
+ public GestionnaireScore getGestionnaireBDD() {
+ return gestionnaireBDD;
+ }
}
diff --git a/src/MenuPrincipal.java b/src/MenuPrincipal.java
index 807e856..716f04f 100644
--- a/src/MenuPrincipal.java
+++ b/src/MenuPrincipal.java
@@ -47,7 +47,12 @@ public class MenuPrincipal {
boutonClassement.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- JOptionPane.showMessageDialog(fenetre, "TOP SCORES", "Classement", JOptionPane.INFORMATION_MESSAGE);
+
+ // 1. On récupère les scores depuis la BDD via l'objet 'jeu'
+ String scores = jeu.getGestionnaireBDD().getTopScores();
+
+ // 2. On affiche le résultat dans la petite fenêtre popup
+ JOptionPane.showMessageDialog(fenetre, scores, "Meilleurs Scores", JOptionPane.INFORMATION_MESSAGE);
}
});