historique de toutes les parties

This commit is contained in:
2026-03-24 21:09:41 +01:00
parent 8444aa7aa7
commit a179611f29
4 changed files with 99 additions and 0 deletions

View File

@@ -169,6 +169,32 @@ public class GestionnaireBDD {
return data.toArray(new Object[0][]); return data.toArray(new Object[0][]);
} }
public Object[][] getHistoriqueParties() {
String sql = "SELECT u.identifiant, p.date_partie, p.score, p.campagne_id, p.difficulte_id, p.duree " +
"FROM parties p " +
"JOIN utilisateurs u ON p.utilisateur_id = u.id " +
"ORDER BY p.date_partie DESC";
List<Object[]> data = new ArrayList<>();
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
Object[] row = {
rs.getString("identifiant"),
new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm").format(rs.getTimestamp("date_partie")),
rs.getInt("score"),
rs.getInt("campagne_id"),
rs.getInt("difficulte_id"),
rs.getInt("duree")
};
data.add(row);
}
} catch (SQLException e) {
System.out.println("Erreur lors de la récupération de l'historique : " + e.getMessage());
}
return data.toArray(new Object[0][]);
}
public void fermerConnexion() { public void fermerConnexion() {
try { try {
if (conn != null) { if (conn != null) {

View File

@@ -17,6 +17,7 @@ public class Jeu implements KeyListener, ActionListener {
protected MenuPrincipal menu; protected MenuPrincipal menu;
protected MenuCampagne menuCampagne; protected MenuCampagne menuCampagne;
protected MenuLeaderboard menuLeaderboard; protected MenuLeaderboard menuLeaderboard;
protected MenuHistorique menuHistorique;
protected Cercle demiCercleAvant; protected Cercle demiCercleAvant;
protected Cercle demiCercleArriere; protected Cercle demiCercleArriere;
@@ -57,6 +58,7 @@ public class Jeu implements KeyListener, ActionListener {
menu = new MenuPrincipal(this); menu = new MenuPrincipal(this);
menuCampagne = new MenuCampagne(this); menuCampagne = new MenuCampagne(this);
menuLeaderboard = new MenuLeaderboard(this); menuLeaderboard = new MenuLeaderboard(this);
menuHistorique = new MenuHistorique(this);
// Initialisation initiale // Initialisation initiale
resetPartie(6, 20); resetPartie(6, 20);
@@ -75,6 +77,7 @@ public class Jeu implements KeyListener, ActionListener {
conteneurPrincipal.add(menu, "MENU"); conteneurPrincipal.add(menu, "MENU");
conteneurPrincipal.add(menuCampagne, "CAMPAGNE"); conteneurPrincipal.add(menuCampagne, "CAMPAGNE");
conteneurPrincipal.add(menuLeaderboard, "LEADERBOARD"); conteneurPrincipal.add(menuLeaderboard, "LEADERBOARD");
conteneurPrincipal.add(menuHistorique, "HISTORIQUE");
conteneurPrincipal.add(ecran, "JEU"); conteneurPrincipal.add(ecran, "JEU");
fenetre.setContentPane(conteneurPrincipal); fenetre.setContentPane(conteneurPrincipal);
@@ -104,6 +107,11 @@ public class Jeu implements KeyListener, ActionListener {
layout.show(conteneurPrincipal, "LEADERBOARD"); layout.show(conteneurPrincipal, "LEADERBOARD");
} }
public void afficherMenuHistorique() {
menuHistorique.rafraichirHistorique();
layout.show(conteneurPrincipal, "HISTORIQUE");
}
public void afficherMenuCampagne() { public void afficherMenuCampagne() {
layout.show(conteneurPrincipal, "CAMPAGNE"); layout.show(conteneurPrincipal, "CAMPAGNE");
} }

View File

@@ -0,0 +1,58 @@
package linea;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
public class MenuHistorique extends JPanel {
private JTable tableHistorique;
private final Jeu jeu;
public MenuHistorique(Jeu jeu) {
this.jeu = jeu;
setLayout(new BorderLayout(10, 10));
setBackground(new Color(45, 45, 45));
JLabel titre = new JLabel("HISTORIQUE DES PARTIES", SwingConstants.CENTER);
titre.setForeground(Color.WHITE);
titre.setFont(new Font("SansSerif", Font.BOLD, 40));
add(titre, BorderLayout.NORTH);
// Configuration du tableau
tableHistorique = new JTable();
tableHistorique.setFont(new Font("SansSerif", Font.PLAIN, 16));
tableHistorique.setRowHeight(25);
tableHistorique.setBackground(new Color(60, 60, 60));
tableHistorique.setForeground(Color.WHITE);
tableHistorique.getTableHeader().setFont(new Font("SansSerif", Font.BOLD, 18));
tableHistorique.getTableHeader().setBackground(new Color(30, 30, 30));
tableHistorique.getTableHeader().setForeground(Color.WHITE);
JScrollPane scrollPane = new JScrollPane(tableHistorique);
scrollPane.getViewport().setBackground(new Color(45, 45, 45));
scrollPane.setBorder(BorderFactory.createEmptyBorder(20, 50, 20, 50));
add(scrollPane, BorderLayout.CENTER);
// Bouton de retour
JButton btnRetour = new JButton("Retour");
btnRetour.setFont(new Font("SansSerif", Font.PLAIN, 18));
btnRetour.addActionListener(e -> jeu.afficherMenuPrincipal());
JPanel southPanel = new JPanel();
southPanel.setBackground(new Color(45, 45, 45));
southPanel.add(btnRetour);
add(southPanel, BorderLayout.SOUTH);
}
public void rafraichirHistorique() {
Object[][] data = jeu.bdd.getHistoriqueParties();
String[] columnNames = {"Identifiant", "Date", "Score", "Campagne", "Difficulté", "Durée (s)"};
// Utilisation d'un DefaultTableModel pour rendre les cellules non éditables
tableHistorique.setModel(new DefaultTableModel(data, columnNames) {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
});
}
}

View File

@@ -7,6 +7,7 @@ public class MenuPrincipal extends JPanel {
private JButton btnPlay; private JButton btnPlay;
private JButton btnCampaign; private JButton btnCampaign;
private JButton btnLeaderboard; private JButton btnLeaderboard;
private JButton btnHistorique;
private JButton btnQuit; private JButton btnQuit;
public MenuPrincipal(Jeu jeu) { public MenuPrincipal(Jeu jeu) {
@@ -23,6 +24,7 @@ public class MenuPrincipal extends JPanel {
btnPlay = creerBouton("PLAY"); btnPlay = creerBouton("PLAY");
btnCampaign = creerBouton("CAMPAGNES"); btnCampaign = creerBouton("CAMPAGNES");
btnLeaderboard = creerBouton("LEADERBOARD"); btnLeaderboard = creerBouton("LEADERBOARD");
btnHistorique = creerBouton("HISTORIQUE");
btnQuit = creerBouton("QUIT"); btnQuit = creerBouton("QUIT");
// Actions // Actions
@@ -32,6 +34,9 @@ public class MenuPrincipal extends JPanel {
btnCampaign.addActionListener(e -> jeu.afficherMenuCampagne()); btnCampaign.addActionListener(e -> jeu.afficherMenuCampagne());
btnLeaderboard.addActionListener(e -> jeu.afficherLeaderboard()); btnLeaderboard.addActionListener(e -> jeu.afficherLeaderboard());
btnHistorique.addActionListener(e->jeu.afficherMenuHistorique());
btnQuit.addActionListener(e -> System.exit(0)); btnQuit.addActionListener(e -> System.exit(0));
// Mise en page (espacement vertical) // Mise en page (espacement vertical)
@@ -44,6 +49,8 @@ public class MenuPrincipal extends JPanel {
add(Box.createRigidArea(new Dimension(0, 15))); add(Box.createRigidArea(new Dimension(0, 15)));
add(btnLeaderboard); add(btnLeaderboard);
add(Box.createRigidArea(new Dimension(0, 15))); add(Box.createRigidArea(new Dimension(0, 15)));
add(btnHistorique);
add(Box.createRigidArea(new Dimension(0, 15)));
add(btnQuit); add(btnQuit);
add(Box.createVerticalGlue()); add(Box.createVerticalGlue());
} }