From 5932c7ed0f6552a4d0dbefde019d473179c19c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20GUEZO?= Date: Fri, 19 Dec 2025 19:27:20 +0100 Subject: [PATCH] feat(SelectionView): ajout commentaire --- src/visual/SelectionView.java | 53 +++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/src/visual/SelectionView.java b/src/visual/SelectionView.java index b02b212..a59c26b 100644 --- a/src/visual/SelectionView.java +++ b/src/visual/SelectionView.java @@ -11,73 +11,96 @@ import model.car.Car; import model.car.Selection; public class SelectionView extends GameView { + /** Builder du jeu associé */ private Game.Builder gameBuilder = new Game.Builder(); + + /** Sélection de voitures et décorateurs */ private Selection selection = new Selection(gameBuilder); + + /** Panel contenant tous les boutons de sélection */ private JPanel buttonPanel = new JPanel(); + /** Accesseur vers la sélection */ public Selection getSelection() { return selection; } + /** + * Constructeur principal + * + * @param ncar nombre de voitures à créer et personnaliser + */ public SelectionView(int ncar) { super(null, "Menu de sélection", 500, 300, 400, 400); - init(null); // forcer le init - + init(null); // forcer l'initialisation du JFrame + + // Layout des boutons : grille avec 3 colonnes (Hybrid, Drunk, Boost) buttonPanel.setLayout(new GridLayout(0, 3, 5, 5)); frame.add(buttonPanel, BorderLayout.CENTER); + // Boucle pour créer chaque voiture et ses boutons de décorateurs for (int i = 1; i <= ncar; i++) { - Car car = selection.addCar("Car " + i, Color.getHSBColor(i / 3f, 0.8f, 0.8f)); - // bouton Hybrid + Car car = selection.addCar( + "Car " + i, + Color.getHSBColor(i / 3f, 0.8f, 0.8f) // couleur différente pour chaque voiture + ); + + // Boutons de décorateurs JButton hybridBtn = new JButton("Hybrid " + car.getName()); - // bouton Drunk JButton drunkBtn = new JButton("Drunk " + car.getName()); - // bouton boost JButton boostBtn = new JButton("Boost " + car.getName()); - final int I = i; + final int I = i; // variable finale pour lambda + // Décorateur Hybrid hybridBtn.addActionListener((ActionEvent e) -> { try { - Car current = selection.getCars().get(I-1); + Car current = selection.getCars().get(I - 1); selection.addHybridCarDecorator(current); hybridBtn.setEnabled(false); } catch (Exception ex) { ex.printStackTrace(); } }); - + + // Décorateur Drunk drunkBtn.addActionListener((ActionEvent e) -> { try { - Car current = selection.getCars().get(I-1); + Car current = selection.getCars().get(I - 1); selection.addDrunkCarDecorator(current); drunkBtn.setEnabled(false); } catch (Exception ex) { ex.printStackTrace(); } }); - + + // Décorateur Boost boostBtn.addActionListener((ActionEvent e) -> { try { - Car current = selection.getCars().get(I-1); + Car current = selection.getCars().get(I - 1); selection.addBoostCarDecorator(current); boostBtn.setEnabled(false); } catch (Exception ex) { ex.printStackTrace(); } }); - + + // Ajouter les boutons au panel buttonPanel.add(hybridBtn); buttonPanel.add(drunkBtn); buttonPanel.add(boostBtn); } + // Bouton Start pour lancer la partie JButton startBtn = new JButton("Start"); startBtn.addActionListener((ActionEvent e) -> { - frame.dispose(); - selection.run(); + frame.dispose(); // ferme le menu + selection.run(); // lance le jeu avec les voitures sélectionnées }); + // Ajout du bouton Start en bas de la fenêtre this.frame.add(startBtn, BorderLayout.SOUTH); + + // Repaint et validation pour afficher correctement les boutons frame.revalidate(); frame.repaint(); }