From 6b22b8530d68e25eb13ac1c8cc02846485b22375 Mon Sep 17 00:00:00 2001 From: llample3 Date: Thu, 19 Feb 2026 20:21:47 +0100 Subject: [PATCH] creation de la base de donne et l'affichage des score --- README.md | 3 +- linea/linea/GestionBDD.java | 96 ++++++++++++++++++++++++++++++++++++ linea/linea/Jeu.java | 41 +++++++++++++++ linea/linea/LineaAppli.java | 2 + score.db | Bin 0 -> 12288 bytes 5 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 linea/linea/GestionBDD.java create mode 100644 score.db diff --git a/README.md b/README.md index dbfc160..56ec997 100644 --- a/README.md +++ b/README.md @@ -1,2 +1 @@ -# Projet_Dev_Java - +# Projet_Dev_Java \ No newline at end of file diff --git a/linea/linea/GestionBDD.java b/linea/linea/GestionBDD.java new file mode 100644 index 0000000..cc73131 --- /dev/null +++ b/linea/linea/GestionBDD.java @@ -0,0 +1,96 @@ +package linea; + +import java.sql.*; +import java.util.ArrayList; +import java.util.List; + +public class GestionBDD { + + private static final String URL = "jdbc:sqlite:score.db"; + + //connexion bdd + private static Connection connecter() throws SQLException { + return DriverManager.getConnection(URL); + } + + //creation de la table score a ca premiere execution + public static void creerTableSiAbsente() { + + String sql = """ + CREATE TABLE IF NOT EXISTS scores ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + score INTEGER NOT NULL, + date TEXT NOT NULL + ); + """; + + try (Connection connexion = connecter(); + Statement statement = connexion.createStatement()) { + + statement.execute(sql); + + } catch (SQLException e) { + e.printStackTrace(); + } + } + + // Ajouter un score a la fin de la partie + public static void ajouterScore(int score) { + + String sql = "INSERT INTO scores(score, date) VALUES(?, ?)"; + + try (Connection connexion = connecter(); + PreparedStatement requete = connexion.prepareStatement(sql)) { + + requete.setInt(1, score); + requete.setString(2, java.time.LocalDate.now().toString()); + + requete.executeUpdate(); + + } catch (SQLException e) { + e.printStackTrace(); + } + } + + // Récupérer tous les scores + public static List recupererTousLesScores() { + + List listeScores = new ArrayList<>(); + + String sql = "SELECT score FROM scores ORDER BY date DESC"; + + try (Connection connexion = connecter(); + Statement statement = connexion.createStatement(); + ResultSet resultat = statement.executeQuery(sql)) { + + while (resultat.next()) { + listeScores.add(resultat.getInt("score")); + } + + } catch (SQLException e) { + e.printStackTrace(); + } + + return listeScores; + } + + // Récupérer le meilleur score + public static int recupererMeilleurScore() { + + String sql = "SELECT MAX(score) AS meilleur FROM scores"; + + try (Connection connexion = connecter(); + Statement statement = connexion.createStatement(); + ResultSet resultat = statement.executeQuery(sql)) { + + if (resultat.next()) { + return resultat.getInt("meilleur"); + } + + } catch (SQLException e) { + e.printStackTrace(); + } + + return 0; + } +} diff --git a/linea/linea/Jeu.java b/linea/linea/Jeu.java index b720dba..3bb7d53 100644 --- a/linea/linea/Jeu.java +++ b/linea/linea/Jeu.java @@ -130,6 +130,45 @@ public class Jeu implements KeyListener, ActionListener{ fenetre.setVisible(true); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + // 🔹 Création du bouton Voir Scores + javax.swing.JButton boutonScores = new javax.swing.JButton("Voir mes scores"); + boutonScores.setBackground(Color.BLACK); // Couleur fond + boutonScores.setForeground(Color.WHITE); // Couleur texte + //boutonScores.setFont(new Font("Arial", Font.BOLD, 14)); // Police + + // Position du bouton + boutonScores.setBounds(300, 20, 160, 30); + + // Action quand on clique + boutonScores.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + java.util.List scores = GestionBDD.recupererTousLesScores(); + int meilleurScore = GestionBDD.recupererMeilleurScore(); + + StringBuilder message = new StringBuilder(); + message.append("Meilleur score : ").append(meilleurScore).append("\n\n"); + message.append("Tous les scores :\n"); + + for (int score : scores) { + message.append(score).append("\n"); + } + + javax.swing.JOptionPane.showMessageDialog( + fenetre, + message.toString(), + "Mes Scores", + javax.swing.JOptionPane.INFORMATION_MESSAGE + ); + } + }); + + // affichier le bouton à l'écran + ecran.setLayout(null); + ecran.add(boutonScores); + + // Démarrage du timer, qui rythmera l'animation horloge = new Timer(40, this); horloge.start(); @@ -166,6 +205,8 @@ public class Jeu implements KeyListener, ActionListener{ this.horloge.stop(); // 1. Arrêter le temps this.ecran.partiePerdue = true; // 2. Signaler à l'écran this.ecran.repaint(); // 3. Forcer l'affichage du texte + + GestionBDD.ajouterScore((int)this.score);// enregistrement du score dans la base de donne } } labScore.setText("

score : " + this.score + "

"); diff --git a/linea/linea/LineaAppli.java b/linea/linea/LineaAppli.java index 6ad9e01..9914ca7 100644 --- a/linea/linea/LineaAppli.java +++ b/linea/linea/LineaAppli.java @@ -7,6 +7,8 @@ public class LineaAppli { //------------------------------------------------------------------------- public static void main(String[] arg) { + GestionBDD.creerTableSiAbsente(); + Jeu jeu = new Jeu(); jeu.demarrer(); diff --git a/score.db b/score.db new file mode 100644 index 0000000000000000000000000000000000000000..2c6428b9eeb4112b5ed871535d090cbe88851aac GIT binary patch literal 12288 zcmeI&&1%9x5C`zxB(xyNdXrpay(wz3DHM8ZDoc^ZXwwy%Q%N-i!H;V60lf6-`Ua)X z&`TenlUOVD(yNsJklkb_vwQg6hUD(n8!cn`G+Rufr95K=#yPu`k}+n{FllUq(?gou zM!NnhEOzoz%~O>jN=!V{gn$49AOHafKmY;|fB*y_009UboIuYwD%NT|Tt<)MIGK;B zReng~`6`|c_LpWWP_9-|yH}o)d$pBmG>Pl9v%1dnpB%6)jCuBKU z$w`XQP_})ou2mp=LA&Dyp}bL{bo;v7_Gw#3`MRD}W=H)L`&}*lzUOV;4I}FGwYsO= zcRrW(=B9XM;zPXC4FLfNKmY;|fB*y_009U<00Izzz<~=0(_*|_a+=P0qvFLT9Q ANB{r; literal 0 HcmV?d00001