Ajout de la partie view du projet

This commit is contained in:
Chahrazad650
2025-11-06 20:29:58 +01:00
commit c6629a1b62
28 changed files with 1041 additions and 0 deletions

61
view/FenetreJeu.java Normal file
View File

@@ -0,0 +1,61 @@
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;
}
}