mirror of
https://github.com/guezoloic/racing-game.git
synced 2026-03-28 18:03:50 +00:00
62 lines
1.8 KiB
Java
62 lines
1.8 KiB
Java
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 l’action Pause/Reprendre */
|
||
public void setActionPause(Runnable action) {
|
||
this.actionPause = action;
|
||
}
|
||
|
||
public Runnable getActionPause() {
|
||
return actionPause;
|
||
}
|
||
}
|