Merge branch 'main' of https://titi.koxi.nl/blodat/projet-dev
This commit is contained in:
9
.idea/libraries/sqlite_jdbc_3_45_1_0.xml
generated
Normal file
9
.idea/libraries/sqlite_jdbc_3_45_1_0.xml
generated
Normal file
@@ -0,0 +1,9 @@
|
||||
<component name="libraryTable">
|
||||
<library name="sqlite-jdbc-3.45.1.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/Downloads/sqlite-jdbc-3.45.1.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
@@ -7,5 +7,6 @@
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="sqlite-jdbc-3.45.1.0" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
51
src/GestionnaireScore.java
Normal file
51
src/GestionnaireScore.java
Normal file
@@ -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();
|
||||
}
|
||||
}
|
||||
21
src/Jeu.java
21
src/Jeu.java
@@ -28,6 +28,9 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
||||
|
||||
protected double score = 1;
|
||||
protected JLabel labScore;
|
||||
protected int vies = 3;
|
||||
|
||||
protected GestionnaireScore gestionnaireBDD = new GestionnaireScore();
|
||||
|
||||
protected int compteurFrames = 0;
|
||||
protected boolean enCollision = false;
|
||||
@@ -39,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);
|
||||
@@ -114,6 +118,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
||||
|
||||
score = 1;
|
||||
compteurFrames = 0;
|
||||
vies = 3;
|
||||
enCollision = false;
|
||||
estGameOver = false;
|
||||
compteurInvincible = 0;
|
||||
@@ -149,22 +154,27 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
||||
} else {
|
||||
if (demiCercleArriere.VerifierCollision(lili)) {
|
||||
if (enCollision == false) {
|
||||
score = score - 5;
|
||||
vies = vies - 1; // La nouvelle logique : on perd 1 vie
|
||||
enCollision = true;
|
||||
compteurInvincible = 0;
|
||||
}
|
||||
} else {
|
||||
enCollision = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (score <= 0) {
|
||||
score = 0;
|
||||
if (vies <= 0) {
|
||||
vies = 0;
|
||||
estGameOver = true;
|
||||
ecran.arreter();
|
||||
labGameOver.setVisible(true);
|
||||
|
||||
if (pseudo != null && !pseudo.isEmpty()) {
|
||||
gestionnaireBDD.sauvegarderScore(pseudo, (int) score);
|
||||
}
|
||||
}
|
||||
|
||||
labScore.setText("<html><h3>" + (int) score + "</h3></html>");
|
||||
labScore.setText("<html><h3>Score : " + (int) score + " | Vies : " + vies + "</h3></html>");
|
||||
|
||||
demiCercleArriere.ResterDansLigne(lili);
|
||||
demiCercleAvant.ResterDansLigne(lili);
|
||||
@@ -208,4 +218,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
}
|
||||
public GestionnaireScore getGestionnaireBDD() {
|
||||
return gestionnaireBDD;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user