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) {
|
public void declencherGameOver(ZoneDessin ecran, String pseudo, int score) {
|
||||||
estGameOver = true;
|
estGameOver = true;
|
||||||
ecran.arreter();
|
ecran.arreter(); // on fige tout, plus d'animation
|
||||||
labGameOver.setVisible(true);
|
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()) {
|
if (pseudo != null && !pseudo.isEmpty()) {
|
||||||
gestionnaireBDD.sauvegarderScore(pseudo, score);
|
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() {
|
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 pseudoFinal = (nom == null || nom.trim().isEmpty()) ? "Anonyme" : nom.trim();
|
||||||
String dateActuelle = new SimpleDateFormat("dd/MM/yyyy HH:mm").format(new Date());
|
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);
|
try (Connection conn = DriverManager.getConnection(URL);
|
||||||
PreparedStatement pstmt = conn.prepareStatement(sql)) {
|
PreparedStatement pstmt = conn.prepareStatement(sql)) {
|
||||||
@@ -28,6 +29,7 @@ public class GestionnaireHistorique {
|
|||||||
pstmt.setString(1, pseudoFinal);
|
pstmt.setString(1, pseudoFinal);
|
||||||
pstmt.setInt(2, points);
|
pstmt.setInt(2, points);
|
||||||
pstmt.setString(3, dateActuelle);
|
pstmt.setString(3, dateActuelle);
|
||||||
|
pstmt.setInt(4, duree);
|
||||||
pstmt.executeUpdate();
|
pstmt.executeUpdate();
|
||||||
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
@@ -36,9 +38,11 @@ public class GestionnaireHistorique {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DefaultTableModel getModeleTableau() {
|
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);
|
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);
|
try (Connection conn = DriverManager.getConnection(URL);
|
||||||
Statement stmt = conn.createStatement();
|
Statement stmt = conn.createStatement();
|
||||||
@@ -53,7 +57,8 @@ public class GestionnaireHistorique {
|
|||||||
rs.getInt("id"),
|
rs.getInt("id"),
|
||||||
dateRecup,
|
dateRecup,
|
||||||
rs.getString("nom"),
|
rs.getString("nom"),
|
||||||
rs.getInt("points")
|
rs.getInt("points"),
|
||||||
|
rs.getInt("duree")
|
||||||
};
|
};
|
||||||
modele.addRow(ligne);
|
modele.addRow(ligne);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -159,6 +159,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
ecran.demarrer();
|
ecran.demarrer();
|
||||||
|
|
||||||
if (horloge == null) {
|
if (horloge == null) {
|
||||||
|
// 40ms par frame, environ 25fps
|
||||||
horloge = new Timer(40, this);
|
horloge = new Timer(40, this);
|
||||||
}
|
}
|
||||||
horloge.start();
|
horloge.start();
|
||||||
@@ -188,6 +189,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
ecran.traiterBoucleAnimation();
|
ecran.traiterBoucleAnimation();
|
||||||
|
|
||||||
compteurFrames++;
|
compteurFrames++;
|
||||||
|
// 25 frames à 40ms = 1 seconde, donc score ≈ durée en secondes
|
||||||
if (compteurFrames >= 25) {
|
if (compteurFrames >= 25) {
|
||||||
score++;
|
score++;
|
||||||
compteurFrames = 0;
|
compteurFrames = 0;
|
||||||
@@ -202,6 +204,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tousMotrs) {
|
if (tousMotrs) {
|
||||||
|
// tous les joueurs sont morts, on déclenche le game over
|
||||||
estGameOver = true;
|
estGameOver = true;
|
||||||
gestionnaireFinDePartie.declencherGameOver(ecran, pseudo, (int) score);
|
gestionnaireFinDePartie.declencherGameOver(ecran, pseudo, (int) score);
|
||||||
}
|
}
|
||||||
@@ -226,6 +229,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
horloge.stop();
|
horloge.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// on repart de zéro : nouvelle ligne, nouveaux joueurs
|
||||||
gestionnaireNiveau.reinitialiser();
|
gestionnaireNiveau.reinitialiser();
|
||||||
lili = new Ligne(new NoiseGenerator(0), gestionnaireNiveau);
|
lili = new Ligne(new NoiseGenerator(0), gestionnaireNiveau);
|
||||||
joueurs.clear();
|
joueurs.clear();
|
||||||
@@ -240,6 +244,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mousePressed(MouseEvent e) {
|
public void mousePressed(MouseEvent e) {
|
||||||
|
// un clic n'importe où à la fin de la partie pour revenir au menu
|
||||||
if (estGameOver) {
|
if (estGameOver) {
|
||||||
retourMenu();
|
retourMenu();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user