63 lines
2.5 KiB
Java
63 lines
2.5 KiB
Java
import java.awt.event.MouseEvent;
|
|
import java.awt.event.MouseListener;
|
|
import javax.swing.JOptionPane;
|
|
|
|
public class ControleurGrille implements MouseListener {
|
|
|
|
private FenetreJeu fenetre;
|
|
private Grille grille;
|
|
|
|
public ControleurGrille(FenetreJeu f, Grille g) {
|
|
this.fenetre = f;
|
|
this.grille = g;
|
|
}
|
|
|
|
@Override
|
|
public void mouseClicked(MouseEvent e) {
|
|
if (this.grille.isPartieTerminee()) return;
|
|
|
|
for (int i = 0; i < grille.getLignes(); i++) {
|
|
for (int j = 0; j < grille.getColonnes(); j++) {
|
|
|
|
if (e.getSource() == fenetre.getBouton(i, j)) {
|
|
Case caseCliquee = grille.getCase(i, j);
|
|
|
|
if (caseCliquee.isRevelee()) return;
|
|
|
|
if (e.getButton() == MouseEvent.BUTTON1) {
|
|
if (caseCliquee.getMarqueur() != 1) {
|
|
boolean aExplose = grille.revelerCase(i, j);
|
|
if (aExplose) {
|
|
grille.setPartieTerminee(true);
|
|
fenetre.afficherDefaite(i, j);
|
|
JOptionPane.showMessageDialog(fenetre, "BOUM ! Vous avez sauté sur une mine !");
|
|
// NOUVEAU : On ne quitte plus de force, on change juste le bouton
|
|
fenetre.changerBoutonEnRetourMenu();
|
|
} else {
|
|
fenetre.rafraichirTouteLaGrille();
|
|
if (grille.estGagnee()) {
|
|
grille.setPartieTerminee(true);
|
|
JOptionPane.showMessageDialog(fenetre, "Félicitations ! Vous avez trouvé toutes les mines !");
|
|
// NOUVEAU : Idem pour la victoire
|
|
fenetre.changerBoutonEnRetourMenu();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (e.getButton() == MouseEvent.BUTTON3) {
|
|
caseCliquee.changerMarqueur();
|
|
fenetre.rafraichirCase(i, j);
|
|
fenetre.mettreAJourCompteur();
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void mousePressed(MouseEvent e) {}
|
|
public void mouseReleased(MouseEvent e) {}
|
|
public void mouseEntered(MouseEvent e) {}
|
|
public void mouseExited(MouseEvent e) {}
|
|
}
|