ajout de temps de jeu dans l'historique + commentaires
This commit is contained in:
BIN
linea_bdd.db
BIN
linea_bdd.db
Binary file not shown.
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user