import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; /** * Action déclenchée pour valider les paramètres et générer la grille de jeu. * Vérifie que les entrées du joueur respectent les règles (entre 4 et 30 cases, etc.). */ public class ActionDemarrer implements ActionListener { private JTextField champLignes; private JTextField champColonnes; private JTextField champMines; private JFrame cible; private Menu menuPrincipal; /** * Constructeur de l'action de démarrage. * @param champL Le champ de texte contenant le nombre de lignes. * @param champC Le champ de texte contenant le nombre de colonnes. * @param champM Le champ de texte contenant le nombre de mines. * @param cible La fenêtre de configuration à fermer. * @param menu Le menu principal à fermer. */ public ActionDemarrer(JTextField champL, JTextField champC, JTextField champM, JFrame cible, Menu menu) { this.champLignes = champL; this.champColonnes = champC; this.champMines = champM; this.cible = cible; this.menuPrincipal = menu; } /** * Récupère les saisies, les valide et lance la fenêtre de jeu si tout est correct. * @param e L'événement du clic. */ public void actionPerformed(ActionEvent e) { String sLignes = champLignes.getText(); String sColonnes = champColonnes.getText(); String sMines = champMines.getText(); try { int l = Integer.parseInt(sLignes); int c = Integer.parseInt(sColonnes); int m = Integer.parseInt(sMines); if (l < 4 || l > 30 || c < 4 || c > 30) { System.out.println("Erreur : Les dimensions doivent être comprises entre 4 et 30"); return; } if (m >= (l * c)) { System.out.println("Erreur : Le nombre de mines doit être inférieur au nombre de cases !"); return; } Grille g = new Grille(l, c); g.placerMines(m); g.calculerToutesLesMines(); new FenetreJeu(g); cible.dispose(); menuPrincipal.getFenetre().dispose(); } catch (NumberFormatException ex) { System.out.println("Erreur : Veuillez entrer des nombres entiers valides"); } } }