ajout de temps de jeu dans l'historique + commentaires

This commit is contained in:
tit-exe
2026-03-28 07:43:33 +01:00
parent a01e27ad2c
commit 6de8ca830e
4 changed files with 19 additions and 8 deletions

Binary file not shown.

View File

@@ -17,14 +17,15 @@ public class GestionnaireFinDePartie {
public void declencherGameOver(ZoneDessin ecran, String pseudo, int score) {
estGameOver = true;
ecran.arreter();
ecran.arreter(); // on fige tout, plus d'animation
labGameOver.setVisible(true);
//sauvegarde dans le top score seulement si ya un pseudo
// on enregistre dans le classement seulement si y'a un pseudo
if (pseudo != null && !pseudo.isEmpty()) {
gestionnaireBDD.sauvegarderScore(pseudo, score);
}
gestionnaireHistorique.sauvegarderPartie(pseudo, score);
// score == durée en secondes (1 pt par seconde, voir Jeu.actionPerformed)
gestionnaireHistorique.sauvegarderPartie(pseudo, score, score);
}
public boolean estGameOver() {

View File

@@ -17,10 +17,11 @@ public class GestionnaireHistorique {
}
}
public void sauvegarderPartie(String nom, int points) {
// enregistre la partie peu importe si le joueur a mis un pseudo ou pas
public void sauvegarderPartie(String nom, int points, int duree) {
String pseudoFinal = (nom == null || nom.trim().isEmpty()) ? "Anonyme" : nom.trim();
String dateActuelle = new SimpleDateFormat("dd/MM/yyyy HH:mm").format(new Date());
String sql = "INSERT INTO historique(nom, points, date_partie) VALUES(?, ?, ?)";
String sql = "INSERT INTO historique(nom, points, date_partie, duree) VALUES(?, ?, ?, ?)";
try (Connection conn = DriverManager.getConnection(URL);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
@@ -28,6 +29,7 @@ public class GestionnaireHistorique {
pstmt.setString(1, pseudoFinal);
pstmt.setInt(2, points);
pstmt.setString(3, dateActuelle);
pstmt.setInt(4, duree);
pstmt.executeUpdate();
} catch (SQLException e) {
@@ -36,9 +38,11 @@ public class GestionnaireHistorique {
}
public DefaultTableModel getModeleTableau() {
String[] nomsColonnes = { "Partie N°", "Date", "Pseudo", "Score" };
// colonnes affichées dans la popup historique du menu
String[] nomsColonnes = { "Partie N°", "Date", "Pseudo", "Score", "Durée (s)" };
DefaultTableModel modele = new DefaultTableModel(nomsColonnes, 0);
String sql = "SELECT id, date_partie, nom, points FROM historique ORDER BY id DESC";
// les plus récentes en haut
String sql = "SELECT id, date_partie, nom, points, duree FROM historique ORDER BY id DESC";
try (Connection conn = DriverManager.getConnection(URL);
Statement stmt = conn.createStatement();
@@ -53,7 +57,8 @@ public class GestionnaireHistorique {
rs.getInt("id"),
dateRecup,
rs.getString("nom"),
rs.getInt("points")
rs.getInt("points"),
rs.getInt("duree")
};
modele.addRow(ligne);
}

View File

@@ -159,6 +159,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
ecran.demarrer();
if (horloge == null) {
// 40ms par frame, environ 25fps
horloge = new Timer(40, this);
}
horloge.start();
@@ -188,6 +189,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
ecran.traiterBoucleAnimation();
compteurFrames++;
// 25 frames à 40ms = 1 seconde, donc score ≈ durée en secondes
if (compteurFrames >= 25) {
score++;
compteurFrames = 0;
@@ -202,6 +204,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
}
if (tousMotrs) {
// tous les joueurs sont morts, on déclenche le game over
estGameOver = true;
gestionnaireFinDePartie.declencherGameOver(ecran, pseudo, (int) score);
}
@@ -226,6 +229,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
horloge.stop();
}
// on repart de zéro : nouvelle ligne, nouveaux joueurs
gestionnaireNiveau.reinitialiser();
lili = new Ligne(new NoiseGenerator(0), gestionnaireNiveau);
joueurs.clear();
@@ -240,6 +244,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
@Override
public void mousePressed(MouseEvent e) {
// un clic n'importe où à la fin de la partie pour revenir au menu
if (estGameOver) {
retourMenu();
}