feat(Dashboard.java): ajout commentaire

This commit is contained in:
2025-11-09 18:48:54 +01:00
parent ea55391242
commit e7f9959230

View File

@@ -1,75 +1,107 @@
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.function.Supplier; import java.util.function.Supplier;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JLabel; import javax.swing.JLabel;
/** /**
* bouton en bas, couleur choisi de la fenetre * Dashboard représente une vue graphique pour une voiture spécifique.
* affiche: carburant restant et tour de piste * <p>
* Il affiche :
* <ul>
* <li>Le carburant restant</li>
* <li>Le nombre de tours complétés</li>
* </ul>
* et fournit un bouton pour mettre en pause ou reprendre le jeu.
* </p>
*/ */
public class Dashboard extends GameView public class Dashboard extends GameView
{ {
private final JLabel label; /** Label affichant le carburant et les tours */
private final JButton button; private final JLabel label;
private final Car car;
private static boolean isPaused = false; /** Bouton pause/reprise */
private final JButton button;
public Dashboard(Car car, String title, Supplier<Boolean> fn, int width, int height, int x, int y) /** Voiture associée à ce dashboard */
{ private final Car car;
super("Dashboard: " + title, width, height, x, y);
this.car = car; /** État de pause global partagé par tous les dashboards */
this.label = new JLabel(); private static boolean isPaused = false;
this.button = new JButton();
// ajout background /**
frame.setBackground(car.getColor()); * Construit un dashboard pour une voiture donnée.
*
* @param car la voiture suivie par ce dashboard
* @param title titre du dashboard
* @param fn fonction appelée pour activer/désactiver la pause
* @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 Dashboard(Car car, String title, Supplier<Boolean> fn, int width, int height, int x, int y)
{
super("Dashboard: " + title, width, height, x, y);
init(fn); this.car = car;
this.label = new JLabel();
this.button = new JButton();
this.add(label, BorderLayout.CENTER); frame.setBackground(car.getColor());
this.add(button, BorderLayout.SOUTH);
}
// fonction uniquement pour l'affichage dynamique
private void updateButtonText()
{
button.setText(isPaused ? "En Pause" : "En Cours");
}
private void init(Supplier<Boolean> fn) init(fn);
{
updateButtonText();
// classe pour le bouton this.add(label, BorderLayout.CENTER);
MouseAdapter ma = new MouseAdapter() { this.add(button, BorderLayout.SOUTH);
@Override }
public void mouseClicked(MouseEvent e)
{
isPaused = fn.get();
updateButtonText();
GameView.update();
}
};
this.button.addMouseListener(ma); /**
} * Met à jour le texte du bouton en fonction de l'état de pause.
*/
private void updateButtonText()
{
button.setText(isPaused ? "En Pause" : "En Cours");
}
@Override /**
public void run() * Initialise le listener du bouton pour gérer la pause.
{ *
label.setText( * @param fn fonction appelée lorsque l'on clique sur le bouton pour inverser l'état de pause
"<html><table><tr><td>Carburant Restant: " + car.getFuel() */
+ "</td></tr><tr><td>Nombre de Tour: " + car.getRound() private void init(Supplier<Boolean> fn)
+ "</td></tr></table></html>" {
); updateButtonText();
updateButtonText(); // classe anonyme pour le bouton
} MouseAdapter ma = new MouseAdapter() {
} @Override
public void mouseClicked(MouseEvent e)
{
isPaused = fn.get();
updateButtonText();
GameView.update();
}
};
this.button.addMouseListener(ma);
}
/**
* Met à jour l'affichage du dashboard pour refléter
* le carburant et le nombre de tours de la voiture.
* Cette méthode est appelée périodiquement par le moteur de jeu.
*/
@Override
public void run()
{
label.setText(
"<html><table><tr><td>Carburant Restant: " + car.getFuel()
+ "</td></tr><tr><td>Nombre de Tour: " + car.getRound()
+ "</td></tr></table></html>"
);
updateButtonText();
}
}