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) {} }