80 lines
2.6 KiB
Java
80 lines
2.6 KiB
Java
import java.awt.event.MouseAdapter;
|
||
import java.awt.event.MouseEvent;
|
||
import javax.swing.JLabel;
|
||
import javax.swing.JOptionPane;
|
||
|
||
/**
|
||
* La classe <code>ControleurSouris</code> gère les clics de souris dans le jeu SameGame.
|
||
* Elle permet de supprimer un groupe de blocs lorsqu’un clic est effectué,
|
||
* de mettre à jour le score et de rafraîchir la vue.
|
||
*
|
||
* @version 1.9
|
||
* @author Emmanuel Srivastava-Tiamzon & Wael Atik
|
||
*/
|
||
public class ControleurSouris extends MouseAdapter {
|
||
|
||
/** La grille logique du jeu. */
|
||
private Grille grille;
|
||
|
||
/** La vue graphique du jeu. */
|
||
private JeuBlocs vue;
|
||
|
||
/** Le label affichant le score du joueur. */
|
||
private JLabel labelScore;
|
||
|
||
/** Le score du joueur */
|
||
private Score score;
|
||
|
||
/** La fenêtre principale. */
|
||
private Fenetre fenetre;
|
||
|
||
/**
|
||
* Constructeur du contrôleur souris.
|
||
*
|
||
* @param grille la grille du jeu
|
||
* @param vue la vue graphique contenant les blocs
|
||
* @param labelScore le label affichant le score
|
||
* @param fenetre la fenêtre principale du jeu
|
||
*/
|
||
public ControleurSouris(Grille grille, JeuBlocs vue, JLabel labelScore, Fenetre fenetre) {
|
||
this.score = new Score();
|
||
this.grille = grille;
|
||
this.vue = vue;
|
||
this.labelScore = labelScore;
|
||
this.fenetre = fenetre;
|
||
}
|
||
|
||
/**
|
||
* Méthode appelée lorsqu’un clic est détecté.
|
||
* Elle supprime le groupe de blocs cliqué (s’il est valide),
|
||
* met à jour le score et rafraîchit l’affichage.
|
||
*
|
||
* @param e l’événement souris
|
||
*/
|
||
@Override
|
||
public void mousePressed(MouseEvent e) {
|
||
int tailleBloc = vue.getTailleBloc();
|
||
int ligne = e.getY() / tailleBloc;
|
||
int colonne = e.getX() / tailleBloc;
|
||
|
||
if (ligne >= 0 && ligne < grille.getLignes() && colonne >= 0 && colonne < grille.getColonnes()) {
|
||
if (grille.estGroupe(ligne, colonne)) {
|
||
grille.supprimerGroupe(ligne, colonne);
|
||
labelScore.setText("Score actuel : " + score.getScore() + " Meilleur score : " + score.getHighestScore());
|
||
vue.mettreAJourCouleurs();
|
||
|
||
if (grille.jeuFini()) {
|
||
fenetre.dispose();
|
||
FenetreFin fenetreFin = new FenetreFin(score.getScore());
|
||
if (score.getScore() > score.getHighestScore() || score.getHighestScore() == 0) {
|
||
score.setHighestScore(score.getScore());
|
||
}
|
||
|
||
fenetreFin.setVisible(true);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|