92 lines
3.3 KiB
Java
92 lines
3.3 KiB
Java
package org.Controllers;
|
|
|
|
import org.Models.Grille;
|
|
import org.Models.Jeu;
|
|
import org.Models.Musique;
|
|
import org.Views.VueBandeauControle;
|
|
|
|
import javax.swing.*;
|
|
|
|
/**
|
|
* Contrôleur pour le bandeau de contrôle du jeu Tetris.
|
|
* Gère les actions des boutons (pause, quitter, aide, relancer) et l'état de la partie.
|
|
*/
|
|
public class TetrisBandeauControleur {
|
|
private boolean partieEnPause = false;
|
|
private boolean partieTerminee = false;
|
|
private Musique musique;
|
|
private VueBandeauControle vueControle;
|
|
private Grille grille;
|
|
private Jeu jeu;
|
|
|
|
/**
|
|
* Crée un contrôleur pour le bandeau de contrôle.
|
|
*
|
|
* @param vueControle la vue du bandeau de contrôle
|
|
* @param musique le gestionnaire de musique
|
|
* @param grille la grille de jeu
|
|
* @param jeu l'instance du jeu
|
|
*/
|
|
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());
|
|
// 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());
|
|
// Listener pour le bouton recommencer
|
|
this.vueControle.getRelancerButton().addActionListener(e -> {
|
|
this.jeu.reinitialiserPartie();
|
|
vueControle.getPauseButton().setText("PAUSE");
|
|
partieEnPause = false;
|
|
partieTerminee = false;
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Bascule l'état de la partie entre pause et reprise.
|
|
* Met à jour la grille, la musique et le texte du bouton pause.
|
|
*/
|
|
public void switchPlayPause() {
|
|
if (partieTerminee) {
|
|
return;
|
|
}
|
|
partieEnPause = !partieEnPause;
|
|
grille.setEnPause(partieEnPause);
|
|
grille.setEnPause(partieEnPause);
|
|
musique.basculePlayPause();
|
|
vueControle.getPauseButton().setText(partieEnPause ? "PLAY" : "PAUSE");
|
|
System.out.println(partieEnPause ? "Partie en pause" : "Partie en cours");
|
|
}
|
|
|
|
/**
|
|
* Affiche une page d'aide avec les commandes du jeu.
|
|
* Met la partie en pause pendant l'affichage de l'aide.
|
|
*/
|
|
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();
|
|
}
|
|
}
|
|
|
|
}
|