Modifications

This commit is contained in:
2024-12-04 10:34:00 +01:00
parent 96a02dd5cb
commit 5a9ecd2da0
5 changed files with 67 additions and 32 deletions

View File

@@ -34,9 +34,9 @@ protected void paintComponent(Graphics g) {
// Appliquer une couleur de barre (mettre en évidence le groupe du joueur en rouge, les autres en bleu)
if (i == highlightedGroup) {
g.setColor(new Color(255, 69, 0)); // Couleur rouge pour le groupe du joueur
g.setColor(new Color(204, 0, 0)); // Couleur rouge pour le groupe du joueur
} else {
g.setColor(new Color(70, 130, 180)); // Bleu pour les autres groupes
g.setColor(new Color(0, 0, 204)); // Bleu pour les autres groupes
}
// Ajouter des ombres à la barre pour un effet 3D

View File

@@ -1,10 +1,13 @@
package fr.monkhanny.dorfromantik.game;
import fr.monkhanny.dorfromantik.Main;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import fr.monkhanny.dorfromantik.Options;
import fr.monkhanny.dorfromantik.gui.MainMenu;
public class MainMenuButtonListener implements ActionListener {
private JFrame gameFrame;
@@ -19,14 +22,6 @@ public class MainMenuButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// Fermer la fenêtre de pause
if (escapeMenu != null) {
escapeMenu.setVisible(false);
}
// Fermer la fenêtre de jeu et revenir au menu principal
gameFrame.setVisible(false);
Options.mainMenu.setVisible(true);
Options.isPaused = false;
Main.resetGame();
}
}

View File

@@ -27,7 +27,7 @@ public class LeaderboardWorldWide extends Leaderboard {
mainPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
// Titre
JLabel titleLabel = new JLabel("Classement mondial");
JLabel titleLabel = new JLabel("Records par série");
titleLabel.setForeground(new Color(76, 175, 80)); // Vert plus doux et moderne
titleLabel.setFont(new Font("Roboto", Font.BOLD, 32)); // Police moderne
titleLabel.setAlignmentX(CENTER_ALIGNMENT);
@@ -57,17 +57,17 @@ public class LeaderboardWorldWide extends Leaderboard {
// Ajout des trois premiers joueurs avec médailles
gbc.gridx = 0;
gbc.weightx = 0.4;
topThreePanel.add(createTopPlayerPanel(topPlayers.get(1).getUsername(), topPlayers.get(1).getScore(),
topThreePanel.add(createTopPlayerPanel(topPlayers.get(1).getSerieName(), topPlayers.get(1).getScore(),
"./ressources/images/MainMenu/Leaderboard/2.png", false), gbc);
gbc.gridx = 1;
gbc.weightx = 0.5;
topThreePanel.add(createTopPlayerPanel(topPlayers.get(0).getUsername(), topPlayers.get(0).getScore(),
topThreePanel.add(createTopPlayerPanel(topPlayers.get(0).getSerieName(), topPlayers.get(0).getScore(),
"./ressources/images/MainMenu/Leaderboard/1.png", true), gbc);
gbc.gridx = 2;
gbc.weightx = 0.4;
topThreePanel.add(createTopPlayerPanel(topPlayers.get(2).getUsername(), topPlayers.get(2).getScore(),
topThreePanel.add(createTopPlayerPanel(topPlayers.get(2).getSerieName(), topPlayers.get(2).getScore(),
"./ressources/images/MainMenu/Leaderboard/3.png", false), gbc);
}
@@ -80,7 +80,7 @@ public class LeaderboardWorldWide extends Leaderboard {
if (topPlayers != null) {
for (int i = 3; i < topPlayers.size(); i++) {
PlayerScore player = topPlayers.get(i);
playersPanel.add(createPlayerPanel(player.getUsername(), player.getScore(), i + 1));
playersPanel.add(createPlayerPanel(player.getSerieName(), player.getScore(), i + 1));
}
}

View File

@@ -75,20 +75,52 @@ public class Database {
public List<PlayerScore> getAllScores(long seriesId) throws SQLException {
List<PlayerScore> allScores = new ArrayList<>();
String query = "SELECT score FROM Scores WHERE series_id = ? ORDER BY score DESC";
// Requête pour récupérer les scores et le nom de la série
String query = "SELECT s.score, se.name " +
"FROM Scores s " +
"JOIN Series se ON s.series_id = se.series_id " +
"WHERE s.series_id = ? " +
"ORDER BY s.score DESC";
try (PreparedStatement stmt = this.database.prepareStatement(query)) {
stmt.setLong(1, seriesId);
stmt.setLong(1, seriesId); // Paramètre pour filtrer par series_id
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
int score = rs.getInt("score");
allScores.add(new PlayerScore("Joueur Anonyme", score)); // Nom générique
String seriesName = rs.getString("name"); // Nom de la série
// Créer un texte à afficher incluant le score et le nom de la série
String displayText = "Score: " + score + " | Série: " + seriesName;
// Ajouter l'objet PlayerScore à la liste avec un nom générique et le score
allScores.add(new PlayerScore(seriesName, score)); // Ajout du nom de la série
}
}
}
return allScores;
}
public List<String> getAllSeries() {
List<String> series = new ArrayList<>();
try {
String query = "SELECT name FROM series ORDER BY date_created DESC"; // Trier par date
Statement statement = this.database.createStatement();
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
series.add(resultSet.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return series;
}
public long getSeedByName(String name) throws SQLException {
String query = "SELECT series_id FROM Series WHERE name = " + "\'" + name + "\'" +";";
long seed = -1; // Valeur par défaut si le seed n'est pas trouvé
@@ -147,16 +179,23 @@ public class Database {
public List<PlayerScore> getTopPlayers() throws SQLException {
List<PlayerScore> topPlayers = new ArrayList<>();
// Requête pour récupérer les scores et la date de soumission
String query = "SELECT score FROM Scores ORDER BY score DESC LIMIT 10";
// Requête pour récupérer les scores et le nom de la série, triée par score décroissant
String query = "SELECT s.score, se.name FROM Scores s " +
"JOIN Series se ON s.series_id = se.series_id " +
"ORDER BY s.score DESC LIMIT 10";
try (Statement stmt = this.database.createStatement();
ResultSet rs = stmt.executeQuery(query)) {
ResultSet rs = stmt.executeQuery(query)) {
while (rs.next()) {
int score = rs.getInt("score");
// Créer un texte à afficher incluant le score et la date formatée
String displayText = "";
topPlayers.add(new PlayerScore(displayText, score));
String seriesName = rs.getString("name"); // Nom de la série
// Créer un texte à afficher incluant le score et le nom de la série
String displayText = "Score: " + score + " | Série: " + seriesName;
// Ajouter l'objet PlayerScore à la liste
topPlayers.add(new PlayerScore(seriesName, score)); // Assurez-vous que PlayerScore accepte un nom de série
}
}
@@ -165,6 +204,7 @@ public class Database {
/**
* Récupère les scores d'une série spécifique, triés en ordre décroissant (du plus élevé au plus bas)
* @param seriesId L'ID de la série

View File

@@ -1,19 +1,19 @@
package fr.monkhanny.dorfromantik.utils;
/**
* Représente un score d'un joueur avec son nom et son score.
* Représente un score d'un joueur dans une série;
*/
public class PlayerScore {
private String username;
private String serie;
private int score;
public PlayerScore(String username, int score) {
this.username = username;
public PlayerScore(String serie, int score) {
this.serie = serie;
this.score = score;
}
public String getUsername() {
return username;
public String getSerieName() {
return serie;
}
public int getScore() {