From 4aab505eed0a4254598822b375a59f2b6a9aeb56 Mon Sep 17 00:00:00 2001 From: ROGER Date: Tue, 20 May 2025 15:13:37 +0200 Subject: [PATCH] ajout d'un bouton restart --- app/src/main/java/org/App.java | 2 +- .../Controllers/TetrisBandeauControleur.java | 13 ++++++- app/src/main/java/org/Models/Grille.java | 11 ++++++ .../java/org/Views/VueBandeauControle.java | 37 +++++++++++-------- 4 files changed, 46 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/org/App.java b/app/src/main/java/org/App.java index 91ce1f8..00dada3 100644 --- a/app/src/main/java/org/App.java +++ b/app/src/main/java/org/App.java @@ -31,7 +31,7 @@ public class App { IO io = new IO(jeu); vueTetris.addKeyListener(io); - new TetrisBandeauControleur(vueTetris.getVueBandeauControle(), musique, grille);// Création d'un controleur de + new TetrisBandeauControleur(vueTetris.getVueBandeauControle(), musique, grille, jeu);// Création d'un controleur de // bandeau avec la musique // instanciée } diff --git a/app/src/main/java/org/Controllers/TetrisBandeauControleur.java b/app/src/main/java/org/Controllers/TetrisBandeauControleur.java index 55cb2f7..7f3f384 100644 --- a/app/src/main/java/org/Controllers/TetrisBandeauControleur.java +++ b/app/src/main/java/org/Controllers/TetrisBandeauControleur.java @@ -1,7 +1,9 @@ package org.Controllers; import org.Models.Grille; +import org.Models.Jeu; import org.Models.Musique; +import org.Models.PieceCourante; import org.Views.VueBandeauControle; import javax.swing.*; @@ -12,12 +14,14 @@ public class TetrisBandeauControleur { private Musique musique; private VueBandeauControle vueControle; private Grille grille; + private Jeu jeu; private JButton aideButton; - public TetrisBandeauControleur(VueBandeauControle vueControle, Musique musique, Grille grille) { + public TetrisBandeauControleur(VueBandeauControle vueControle, Musique musique, Grille grille, Jeu jeu) { this.vueControle = vueControle; this.musique = musique; this.grille = grille; + this.jeu = jeu; // action play/pause //Listener pour le bouton play/pause this.vueControle.getPauseButton().addActionListener(e -> switchPlayPause()); @@ -28,6 +32,13 @@ public class TetrisBandeauControleur { }); //Listener pour le bouton aide this.vueControle.getAideButton().addActionListener(e -> afficherAide()); + //Listener pour le bouton recommencer + this.vueControle.getRelancerButton().addActionListener(e -> { + jeu.reinitialiserPartie(); + vueControle.getPauseButton().setText("PAUSE"); + partieEnPause = false; + partieTerminee = false; + }); } public void switchPlayPause() { diff --git a/app/src/main/java/org/Models/Grille.java b/app/src/main/java/org/Models/Grille.java index e11a819..b4e914a 100644 --- a/app/src/main/java/org/Models/Grille.java +++ b/app/src/main/java/org/Models/Grille.java @@ -360,4 +360,15 @@ public class Grille extends Observable { // TODO: ?? implements Runnable { public void setNbLignesSupprimees(int nbLignesSupprimees) { this.nbLignesSupprimees = nbLignesSupprimees; } + + public void reinitialiserGrille() { + initGrille(); + score = 0; + nbLignesSupprimees = 0; + pieceCourante = null; + pieceCouranteX = 3; + pieceCouranteY = 0; + setChanged(); + notifyObservers(); + } } \ No newline at end of file diff --git a/app/src/main/java/org/Views/VueBandeauControle.java b/app/src/main/java/org/Views/VueBandeauControle.java index c06be57..5977599 100644 --- a/app/src/main/java/org/Views/VueBandeauControle.java +++ b/app/src/main/java/org/Views/VueBandeauControle.java @@ -19,6 +19,7 @@ public class VueBandeauControle extends JPanel implements Observer { private JLabel nbLigneLabel; private JButton quitterButton; private Jeu jeu; + private JButton relancerButton; public VueBandeauControle(Jeu jeu) { this.jeu = jeu; @@ -53,29 +54,32 @@ public class VueBandeauControle extends JPanel implements Observer { pauseButton.setMargin(margeBoutton); quitterButton.setPreferredSize(buttonSize); quitterButton.setMargin(margeBoutton); - JPanel boutonsPanel = new JPanel(); - //boutonsPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 0)); - boutonsPanel.setLayout(new BoxLayout(boutonsPanel, BoxLayout.X_AXIS)); - boutonsPanel.setOpaque(false); - boutonsPanel.add(pauseButton); - boutonsPanel.add(Box.createRigidArea(new Dimension(10, 0))); - boutonsPanel.add(quitterButton); + JPanel hautBoutonsPanel = new JPanel(); + //boutonsPanel.setLayout(new BoxLayout(boutonsPanel, BoxLayout.X_AXIS)); + hautBoutonsPanel.setOpaque(false); + hautBoutonsPanel.add(pauseButton); + hautBoutonsPanel.add(Box.createRigidArea(new Dimension(10, 0))); + hautBoutonsPanel.add(quitterButton); pauseButton.setFocusable(false); quitterButton.setFocusable(false); + //Relancer button + relancerButton = new JButton("RESTART"); + relancerButton.setPreferredSize(buttonSize); + relancerButton.setMargin(margeBoutton); + relancerButton.setFocusable(false); + // AIDE BUTTON aideButton = new JButton("?"); aideButton.setToolTipText("AFFICHER L'AIDE"); aideButton.setPreferredSize(new Dimension(45, 20)); aideButton.setFocusable(false); - JPanel footerPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 10, 5)); + + JPanel footerPanel = new JPanel(new BorderLayout()); footerPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, 40)); footerPanel.setOpaque(false); - footerPanel.add(aideButton); - - - - + footerPanel.add(relancerButton, BorderLayout.WEST); + footerPanel.add(aideButton, BorderLayout.EAST); add(Box.createVerticalStrut(20)); add(scoreLabel); @@ -84,9 +88,8 @@ public class VueBandeauControle extends JPanel implements Observer { add(Box.createVerticalStrut(20)); add(nextPiecePanel); add(Box.createVerticalStrut(20)); - add(boutonsPanel); + add(hautBoutonsPanel); add(Box.createVerticalGlue()); //force le JPanel à prendre toute la hauteur - add(footerPanel); // setVisible(true); @@ -153,6 +156,10 @@ public class VueBandeauControle extends JPanel implements Observer { return aideButton; } + public JButton getRelancerButton() { + return relancerButton; + } + @Override public void update(Observable o, Object arg) { if (o instanceof Jeu) {