ajout d'un bouton d'aideà avec play/pause quand le menu aide est affiché
This commit is contained in:
@@ -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);// Création d'un controleur de
|
||||
// bandeau avec la musique
|
||||
// instanciée
|
||||
}
|
||||
|
||||
@@ -4,24 +4,30 @@ import org.Models.Grille;
|
||||
import org.Models.Musique;
|
||||
import org.Views.VueBandeauControle;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class TetrisBandeauControleur {
|
||||
private boolean partieEnPause = false;
|
||||
private boolean partieTerminee = false;
|
||||
private Musique musique;
|
||||
private VueBandeauControle vueControle;
|
||||
private Grille grille;
|
||||
private JButton aideButton;
|
||||
|
||||
public TetrisBandeauControleur(VueBandeauControle vueControle, Musique musique, Grille grille) {
|
||||
this.vueControle = vueControle;
|
||||
this.musique = musique;
|
||||
this.grille = grille;
|
||||
// action play/pause
|
||||
//Listener pour le bouton play/pause
|
||||
this.vueControle.getPauseButton().addActionListener(e -> switchPlayPause());
|
||||
//Listener pour le bouton quitter
|
||||
this.vueControle.getQuitterButton().addActionListener(e -> {
|
||||
System.out.println("Fermeture de l'application...");
|
||||
System.exit(0);
|
||||
});
|
||||
|
||||
//Listener pour le bouton aide
|
||||
this.vueControle.getAideButton().addActionListener(e -> afficherAide());
|
||||
}
|
||||
|
||||
public void switchPlayPause() {
|
||||
@@ -42,4 +48,21 @@ public class TetrisBandeauControleur {
|
||||
System.out.println("Partie terminée");
|
||||
}
|
||||
|
||||
public void afficherAide() {
|
||||
String messageAide = "Utilisez les flèches du clavier pour déplacer la pièce courante :\n" +
|
||||
"Flèche gauche : Déplacer à gauche\n" +
|
||||
"Flèche droite : Déplacer à droite\n" +
|
||||
"Flèche bas : Accélérer la chute\n" +
|
||||
"R : Faire pivoter la pièce sens horaire\n" +
|
||||
"E : Faire pivoter la pièce sens anti horaire\n" +
|
||||
"Espace : Hard drop\n";
|
||||
if (!grille.estEnPause()) {
|
||||
grille.setEnPause(true);
|
||||
musique.basculePlayPause();
|
||||
JOptionPane.showMessageDialog(vueControle,messageAide, "Aide", JOptionPane.INFORMATION_MESSAGE);
|
||||
grille.setEnPause(false);
|
||||
musique.basculePlayPause();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -350,8 +350,14 @@ public class Grille extends Observable { // TODO: ?? implements Runnable {
|
||||
public int getScore(){
|
||||
return score;
|
||||
}
|
||||
public void setScore(int score) {
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
public int getNbLignesSupprimees() {
|
||||
return nbLignesSupprimees;
|
||||
}
|
||||
public void setNbLignesSupprimees(int nbLignesSupprimees) {
|
||||
this.nbLignesSupprimees = nbLignesSupprimees;
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,6 @@ public class Jeu extends Observable implements Runnable {
|
||||
private PieceCourante pieceSuivante;
|
||||
private int pieceSuivanteX;
|
||||
private int pieceSuivanteY;
|
||||
|
||||
public boolean jeuEnCours = true;
|
||||
|
||||
public Jeu(Grille grille, Musique musique) {
|
||||
@@ -102,8 +101,9 @@ public class Jeu extends Observable implements Runnable {
|
||||
public boolean estFinPartie() {
|
||||
for (Point caseColoree : this.grille.motifPieceCouranteColoriee()) {
|
||||
if (this.grille.getCase(caseColoree.y, caseColoree.x)) {
|
||||
new VueGameOver(grille.getScore(),e -> System.exit(0),e->{
|
||||
System.out.println("Début d'une nouvelle partie");
|
||||
VueGameOver gameOver = new VueGameOver(grille.getScore(),e -> System.exit(0),()->{
|
||||
System.out.println("\"rejouer\"clique");
|
||||
reinitialiserPartie();
|
||||
});
|
||||
return true;
|
||||
}
|
||||
@@ -123,6 +123,33 @@ public class Jeu extends Observable implements Runnable {
|
||||
notifyObservers();
|
||||
}
|
||||
|
||||
public void reinitialiserPartie(){
|
||||
this.grille.initGrille();
|
||||
this.grille.setPieceCourante(getNouvellePiece());
|
||||
this.grille.setScore(0);
|
||||
this.grille.setNbLignesSupprimees(0);
|
||||
this.pieceSuivante= getNouvellePiece();
|
||||
this.jeuEnCours = true;
|
||||
this.ordonnanceur = new Ordonnanceur(this, 1000);
|
||||
this.ordonnanceur.start();
|
||||
setChanged();
|
||||
notifyObservers();
|
||||
}
|
||||
|
||||
public void pauseJeu(){
|
||||
grille.setEnPause(true);
|
||||
if (musique != null) {
|
||||
musique.basculePlayPause();
|
||||
}
|
||||
}
|
||||
|
||||
public void reprendreJeu(){
|
||||
grille.setEnPause(false);
|
||||
if (musique != null) {
|
||||
musique.basculePlayPause();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
// TODO: game logic here
|
||||
|
||||
@@ -14,6 +14,7 @@ public class VueBandeauControle extends JPanel implements Observer {
|
||||
private JLabel scoreLabel;
|
||||
private JPanel nextPiecePanel;
|
||||
private JButton pauseButton;
|
||||
private JButton aideButton;
|
||||
private JPanel[][] caseNextPiece = new JPanel[4][4];
|
||||
private JLabel nbLigneLabel;
|
||||
private JButton quitterButton;
|
||||
@@ -53,13 +54,29 @@ public class VueBandeauControle extends JPanel implements Observer {
|
||||
quitterButton.setPreferredSize(buttonSize);
|
||||
quitterButton.setMargin(margeBoutton);
|
||||
JPanel boutonsPanel = new JPanel();
|
||||
boutonsPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 0));
|
||||
//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);
|
||||
pauseButton.setFocusable(false);
|
||||
quitterButton.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));
|
||||
footerPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, 40));
|
||||
footerPanel.setOpaque(false);
|
||||
footerPanel.add(aideButton);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
add(Box.createVerticalStrut(20));
|
||||
add(scoreLabel);
|
||||
add(Box.createVerticalStrut(20));
|
||||
@@ -68,6 +85,9 @@ public class VueBandeauControle extends JPanel implements Observer {
|
||||
add(nextPiecePanel);
|
||||
add(Box.createVerticalStrut(20));
|
||||
add(boutonsPanel);
|
||||
add(Box.createVerticalGlue()); //force le JPanel à prendre toute la hauteur
|
||||
|
||||
add(footerPanel);
|
||||
|
||||
// setVisible(true);
|
||||
jeu.addObserver(this);
|
||||
@@ -129,6 +149,10 @@ public class VueBandeauControle extends JPanel implements Observer {
|
||||
nextPiecePanel.repaint();
|
||||
}
|
||||
|
||||
public JButton getAideButton() {
|
||||
return aideButton;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Observable o, Object arg) {
|
||||
if (o instanceof Jeu) {
|
||||
|
||||
@@ -8,7 +8,7 @@ public class VueGameOver extends JFrame {
|
||||
private JButton quitterButton;
|
||||
private JButton rejouerButton;
|
||||
|
||||
public VueGameOver(int score, ActionListener quitterListener, ActionListener rejouerListener) {
|
||||
public VueGameOver(int score, ActionListener quitterListener, Runnable rejouerListener) {
|
||||
setTitle("FIN DE PARTIE");
|
||||
setSize(400,400);
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
@@ -31,7 +31,10 @@ public class VueGameOver extends JFrame {
|
||||
|
||||
//mise en forme boutons
|
||||
quitterButton.addActionListener(quitterListener);
|
||||
rejouerButton.addActionListener(rejouerListener);
|
||||
rejouerButton.addActionListener(e -> {
|
||||
dispose();
|
||||
rejouerListener.run();
|
||||
});
|
||||
buttonPanel.add(quitterButton);
|
||||
buttonPanel.add(rejouerButton);
|
||||
panel.add(buttonPanel, BorderLayout.SOUTH);
|
||||
|
||||
Reference in New Issue
Block a user