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);
|
IO io = new IO(jeu);
|
||||||
vueTetris.addKeyListener(io);
|
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
|
// bandeau avec la musique
|
||||||
// instanciée
|
// instanciée
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,24 +4,30 @@ import org.Models.Grille;
|
|||||||
import org.Models.Musique;
|
import org.Models.Musique;
|
||||||
import org.Views.VueBandeauControle;
|
import org.Views.VueBandeauControle;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
public class TetrisBandeauControleur {
|
public class TetrisBandeauControleur {
|
||||||
private boolean partieEnPause = false;
|
private boolean partieEnPause = false;
|
||||||
private boolean partieTerminee = false;
|
private boolean partieTerminee = false;
|
||||||
private Musique musique;
|
private Musique musique;
|
||||||
private VueBandeauControle vueControle;
|
private VueBandeauControle vueControle;
|
||||||
private Grille grille;
|
private Grille grille;
|
||||||
|
private JButton aideButton;
|
||||||
|
|
||||||
public TetrisBandeauControleur(VueBandeauControle vueControle, Musique musique, Grille grille) {
|
public TetrisBandeauControleur(VueBandeauControle vueControle, Musique musique, Grille grille) {
|
||||||
this.vueControle = vueControle;
|
this.vueControle = vueControle;
|
||||||
this.musique = musique;
|
this.musique = musique;
|
||||||
this.grille = grille;
|
this.grille = grille;
|
||||||
// action play/pause
|
// action play/pause
|
||||||
|
//Listener pour le bouton play/pause
|
||||||
this.vueControle.getPauseButton().addActionListener(e -> switchPlayPause());
|
this.vueControle.getPauseButton().addActionListener(e -> switchPlayPause());
|
||||||
|
//Listener pour le bouton quitter
|
||||||
this.vueControle.getQuitterButton().addActionListener(e -> {
|
this.vueControle.getQuitterButton().addActionListener(e -> {
|
||||||
System.out.println("Fermeture de l'application...");
|
System.out.println("Fermeture de l'application...");
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
});
|
});
|
||||||
|
//Listener pour le bouton aide
|
||||||
|
this.vueControle.getAideButton().addActionListener(e -> afficherAide());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void switchPlayPause() {
|
public void switchPlayPause() {
|
||||||
@@ -42,4 +48,21 @@ public class TetrisBandeauControleur {
|
|||||||
System.out.println("Partie terminée");
|
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(){
|
public int getScore(){
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
public void setScore(int score) {
|
||||||
|
this.score = score;
|
||||||
|
}
|
||||||
|
|
||||||
public int getNbLignesSupprimees() {
|
public int getNbLignesSupprimees() {
|
||||||
return nbLignesSupprimees;
|
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 PieceCourante pieceSuivante;
|
||||||
private int pieceSuivanteX;
|
private int pieceSuivanteX;
|
||||||
private int pieceSuivanteY;
|
private int pieceSuivanteY;
|
||||||
|
|
||||||
public boolean jeuEnCours = true;
|
public boolean jeuEnCours = true;
|
||||||
|
|
||||||
public Jeu(Grille grille, Musique musique) {
|
public Jeu(Grille grille, Musique musique) {
|
||||||
@@ -102,8 +101,9 @@ public class Jeu extends Observable implements Runnable {
|
|||||||
public boolean estFinPartie() {
|
public boolean estFinPartie() {
|
||||||
for (Point caseColoree : this.grille.motifPieceCouranteColoriee()) {
|
for (Point caseColoree : this.grille.motifPieceCouranteColoriee()) {
|
||||||
if (this.grille.getCase(caseColoree.y, caseColoree.x)) {
|
if (this.grille.getCase(caseColoree.y, caseColoree.x)) {
|
||||||
new VueGameOver(grille.getScore(),e -> System.exit(0),e->{
|
VueGameOver gameOver = new VueGameOver(grille.getScore(),e -> System.exit(0),()->{
|
||||||
System.out.println("Début d'une nouvelle partie");
|
System.out.println("\"rejouer\"clique");
|
||||||
|
reinitialiserPartie();
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -123,6 +123,33 @@ public class Jeu extends Observable implements Runnable {
|
|||||||
notifyObservers();
|
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
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
// TODO: game logic here
|
// TODO: game logic here
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ public class VueBandeauControle extends JPanel implements Observer {
|
|||||||
private JLabel scoreLabel;
|
private JLabel scoreLabel;
|
||||||
private JPanel nextPiecePanel;
|
private JPanel nextPiecePanel;
|
||||||
private JButton pauseButton;
|
private JButton pauseButton;
|
||||||
|
private JButton aideButton;
|
||||||
private JPanel[][] caseNextPiece = new JPanel[4][4];
|
private JPanel[][] caseNextPiece = new JPanel[4][4];
|
||||||
private JLabel nbLigneLabel;
|
private JLabel nbLigneLabel;
|
||||||
private JButton quitterButton;
|
private JButton quitterButton;
|
||||||
@@ -53,13 +54,29 @@ public class VueBandeauControle extends JPanel implements Observer {
|
|||||||
quitterButton.setPreferredSize(buttonSize);
|
quitterButton.setPreferredSize(buttonSize);
|
||||||
quitterButton.setMargin(margeBoutton);
|
quitterButton.setMargin(margeBoutton);
|
||||||
JPanel boutonsPanel = new JPanel();
|
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.setOpaque(false);
|
||||||
boutonsPanel.add(pauseButton);
|
boutonsPanel.add(pauseButton);
|
||||||
|
boutonsPanel.add(Box.createRigidArea(new Dimension(10, 0)));
|
||||||
boutonsPanel.add(quitterButton);
|
boutonsPanel.add(quitterButton);
|
||||||
pauseButton.setFocusable(false);
|
pauseButton.setFocusable(false);
|
||||||
quitterButton.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(Box.createVerticalStrut(20));
|
||||||
add(scoreLabel);
|
add(scoreLabel);
|
||||||
add(Box.createVerticalStrut(20));
|
add(Box.createVerticalStrut(20));
|
||||||
@@ -68,6 +85,9 @@ public class VueBandeauControle extends JPanel implements Observer {
|
|||||||
add(nextPiecePanel);
|
add(nextPiecePanel);
|
||||||
add(Box.createVerticalStrut(20));
|
add(Box.createVerticalStrut(20));
|
||||||
add(boutonsPanel);
|
add(boutonsPanel);
|
||||||
|
add(Box.createVerticalGlue()); //force le JPanel à prendre toute la hauteur
|
||||||
|
|
||||||
|
add(footerPanel);
|
||||||
|
|
||||||
// setVisible(true);
|
// setVisible(true);
|
||||||
jeu.addObserver(this);
|
jeu.addObserver(this);
|
||||||
@@ -129,6 +149,10 @@ public class VueBandeauControle extends JPanel implements Observer {
|
|||||||
nextPiecePanel.repaint();
|
nextPiecePanel.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JButton getAideButton() {
|
||||||
|
return aideButton;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(Observable o, Object arg) {
|
public void update(Observable o, Object arg) {
|
||||||
if (o instanceof Jeu) {
|
if (o instanceof Jeu) {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ public class VueGameOver extends JFrame {
|
|||||||
private JButton quitterButton;
|
private JButton quitterButton;
|
||||||
private JButton rejouerButton;
|
private JButton rejouerButton;
|
||||||
|
|
||||||
public VueGameOver(int score, ActionListener quitterListener, ActionListener rejouerListener) {
|
public VueGameOver(int score, ActionListener quitterListener, Runnable rejouerListener) {
|
||||||
setTitle("FIN DE PARTIE");
|
setTitle("FIN DE PARTIE");
|
||||||
setSize(400,400);
|
setSize(400,400);
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
@@ -31,7 +31,10 @@ public class VueGameOver extends JFrame {
|
|||||||
|
|
||||||
//mise en forme boutons
|
//mise en forme boutons
|
||||||
quitterButton.addActionListener(quitterListener);
|
quitterButton.addActionListener(quitterListener);
|
||||||
rejouerButton.addActionListener(rejouerListener);
|
rejouerButton.addActionListener(e -> {
|
||||||
|
dispose();
|
||||||
|
rejouerListener.run();
|
||||||
|
});
|
||||||
buttonPanel.add(quitterButton);
|
buttonPanel.add(quitterButton);
|
||||||
buttonPanel.add(rejouerButton);
|
buttonPanel.add(rejouerButton);
|
||||||
panel.add(buttonPanel, BorderLayout.SOUTH);
|
panel.add(buttonPanel, BorderLayout.SOUTH);
|
||||||
|
|||||||
Reference in New Issue
Block a user