Files
DEV/SAE21_2024/code_source/ControleurSouris.java
2025-12-05 10:28:17 +01:00

80 lines
2.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 lorsquun 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 lorsquun clic est détecté.
* Elle supprime le groupe de blocs cliqué (sil est valide),
* met à jour le score et rafraîchit laffichage.
*
* @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);
}
}
}
}
}