From 029fcc3b7436965bfc8a1252edf82e2a3c09173a Mon Sep 17 00:00:00 2001 From: B00M360 <163397165+B00M360@users.noreply.github.com> Date: Wed, 4 Mar 2026 14:58:03 +0100 Subject: [PATCH] base sql qui ne fonction pas encore --- .idea/libraries/sqlite_jdbc_3_45_1_0.xml | 9 +++++ projet-dev.iml | 1 + src/GestionnaireScore.java | 51 ++++++++++++++++++++++++ src/Jeu.java | 10 +++++ src/MenuPrincipal.java | 7 +++- 5 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 .idea/libraries/sqlite_jdbc_3_45_1_0.xml create mode 100644 src/GestionnaireScore.java 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); } });