mirror of
https://github.com/guezoloic/racing-game.git
synced 2026-03-28 18:03:50 +00:00
72 lines
1.8 KiB
Java
72 lines
1.8 KiB
Java
import java.awt.BorderLayout;
|
|
import java.util.ArrayList;
|
|
import java.util.Comparator;
|
|
|
|
import javax.swing.JLabel;
|
|
|
|
|
|
/**
|
|
* Rankboard est une vue graphique affichant le classement des voitures.
|
|
* <p>
|
|
* Elle hérite de GameView et met à jour dynamiquement le score de chaque voiture.
|
|
* Les scores sont triés du plus grand au plus petit.
|
|
* </p>
|
|
*/
|
|
public class Rankboard extends GameView
|
|
{
|
|
/** Liste des voitures à afficher */
|
|
ArrayList<Car> cars;
|
|
|
|
/** Composant JLabel pour afficher le classement */
|
|
private final JLabel label;
|
|
|
|
/**
|
|
* Construit un Rankboard.
|
|
*
|
|
* @param title Titre de la fenêtre
|
|
* @param cars Liste des voitures à suivre
|
|
* @param width Largeur de la fenêtre
|
|
* @param height Hauteur de la fenêtre
|
|
* @param x Position horizontale de la fenêtre
|
|
* @param y Position verticale de la fenêtre
|
|
*/
|
|
public Rankboard(String title, ArrayList<Car> cars, int width, int height, int x, int y)
|
|
{
|
|
super(title, width, height, x, y);
|
|
this.cars = cars;
|
|
this.label = new JLabel();
|
|
this.add(label, BorderLayout.CENTER);
|
|
}
|
|
|
|
/**
|
|
* Met à jour le texte affiché dans le JLabel.
|
|
* <p>
|
|
* Trie les voitures par score décroissant et construit
|
|
* un tableau HTML pour l'affichage.
|
|
* </p>
|
|
*/
|
|
private void updateRankText()
|
|
{
|
|
cars.sort(Comparator.comparingInt(Car::getScore).reversed());
|
|
StringBuilder s = new StringBuilder();
|
|
s.append("<html><table>");
|
|
for (Car c : cars)
|
|
{
|
|
s.append("<tr><td>" + c + ": " + c.getScore() + "%</td></tr>");
|
|
}
|
|
s.append("</table></html>");
|
|
label.setText(s.toString());
|
|
}
|
|
|
|
@Override
|
|
/**
|
|
* Méthode appelée par GameView.update().
|
|
* Elle met à jour le classement affiché.
|
|
*/
|
|
protected void run()
|
|
{
|
|
updateRankText();
|
|
}
|
|
|
|
}
|