Files
racing-game/view/FenetreJeu.java
2025-11-06 20:29:58 +01:00

62 lines
1.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package view;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import model.*;
/**
* Fenêtre principale du jeu de course.
* Elle affiche :
* - le circuit
* - le classement des voitures
* - et ouvre une fenêtre de tableau de bord pour chaque voiture.
*/
public class FenetreJeu extends JFrame {
private final PanneauCircuit panneauCircuit;
private final PanneauClassement panneauClassement;
private final java.util.List<FenetreTableau> tableaux = new ArrayList<>();
private Runnable actionPause; // Action pour pause/reprendre, donnée par le contrôleur
public FenetreJeu(Game game) {
setTitle("🏎️ Jeu de course - Vue principale");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// Partie centrale : le circuit
panneauCircuit = new PanneauCircuit(game);
add(panneauCircuit, BorderLayout.CENTER);
// Partie droite : le classement
panneauClassement = new PanneauClassement(game);
add(panneauClassement, BorderLayout.EAST);
// Fenêtres séparées : un tableau de bord par voiture
for (Car voiture : game.getCars()) {
tableaux.add(new FenetreTableau(voiture, this));
}
setSize(1100, 650);
setLocationRelativeTo(null); // centre la fenêtre à lécran
setVisible(true);
}
/** Met à jour tous les affichages à partir du modèle */
public void rafraichir(Game game) {
panneauCircuit.mettreAJour(game);
panneauClassement.mettreAJour(game);
tableaux.forEach(FenetreTableau::rafraichir);
}
/** Permet au contrôleur de donner laction Pause/Reprendre */
public void setActionPause(Runnable action) {
this.actionPause = action;
}
public Runnable getActionPause() {
return actionPause;
}
}