mirror of
https://github.com/guezoloic/racing-game.git
synced 2026-03-28 18:03:50 +00:00
feat(Dashboard.java): ajout commentaire
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user