diff --git a/ControleurMenu.java b/ControleurMenu.java index 6b8e252..676d17d 100644 --- a/ControleurMenu.java +++ b/ControleurMenu.java @@ -1,6 +1,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; - +import javax.swing.JOptionPane; public class ControleurMenu implements ActionListener { @@ -11,26 +11,39 @@ public class ControleurMenu implements ActionListener { this.menu = m; } - @Override + @Override public void actionPerformed(ActionEvent evenement) { if (evenement.getSource() == this.menu.getBtnNouvellePartie()) { + try { + String strL = JOptionPane.showInputDialog(menu, "Nombre de lignes (entre 4 et 30) :"); + if (strL == null) return; + int l = Integer.parseInt(strL); + + String strC = JOptionPane.showInputDialog(menu, "Nombre de colonnes (entre 4 et 30) :"); + if (strC == null) return; + int c = Integer.parseInt(strC); + + String strM = JOptionPane.showInputDialog(menu, "Nombre total de mines :"); + if (strM == null) return; + int m = Integer.parseInt(strM); + + if (l < 4 || l > 30 || c < 4 || c > 30 || m >= (l * c)) { + JOptionPane.showMessageDialog(menu, "Valeurs incorrectes ! Les dimensions doivent être entre 4 et 30, et les mines inférieures au nombre de cases."); + return; + } + + Grille nouvelleGrille = new Grille(l, c, m); + FenetreJeu fenetre = new FenetreJeu(nouvelleGrille); + fenetre.setVisible(true); + this.menu.dispose(); + + } catch (NumberFormatException ex) { + JOptionPane.showMessageDialog(menu, "Erreur : Vous devez entrer des nombres entiers !"); + } - System.out.println("Création d'une nouvelle partie..."); - - Grille nouvelleGrille = new Grille(10, 10, 10); - - FenetreJeu fenetre = new FenetreJeu(nouvelleGrille); - fenetre.setVisible(true); - - this.menu.dispose(); - } else if (evenement.getSource() == this.menu.getBtnReprendre()) { - System.out.println("Chargement de la sauvegarde..."); - } else if (evenement.getSource() == this.menu.getBtnQuitter()) { - - System.out.println("Fermeture du jeu."); System.exit(0); } } diff --git a/FenetreJeu.java b/FenetreJeu.java index 2708e94..bc36998 100644 --- a/FenetreJeu.java +++ b/FenetreJeu.java @@ -16,16 +16,20 @@ public class FenetreJeu extends JFrame { this.setLayout(new BorderLayout()); JPanel panneauGrille = new JPanel(); - - panneauGrille.setLayout(new GridLayout(10, 10)); + panneauGrille.setLayout(new GridLayout(g.getLignes(), g.getColonnes())); - for (int i = 0; i < 10; i++) { - for (int j = 0; j < 10; j++) { + for (int i = 0; i < g.getLignes(); i++) { + for (int j = 0; j < g.getColonnes(); j++) { JButton boutonCase = new JButton("?"); panneauGrille.add(boutonCase); } } - this.add(panneauGrille, BorderLayout.CENTER); + + JButton btnSauverQuitter = new JButton("Sauver et Quitter"); + this.add(btnSauverQuitter, BorderLayout.SOUTH); + + ControleurJeu controleur = new ControleurJeu(this); + btnSauverQuitter.addActionListener(controleur); } } diff --git a/Grille.java b/Grille.java index 3e50bf5..f8999e9 100644 --- a/Grille.java +++ b/Grille.java @@ -7,6 +7,9 @@ public class Grille implements Serializable { private int colonnes; private int mines; + public int getLignes() { return this.lignes; } + public int getColonnes() { return this.colonnes; } + public Grille(int l, int c, int m) { this.lignes = l; diff --git a/Makefile b/Makefile index f6f1fab..f551980 100644 --- a/Makefile +++ b/Makefile @@ -3,15 +3,14 @@ JFLAGS = -implicit:none all: MenuPrincipal.class Grille.class - Case.class: Case.java $(JC) $(JFLAGS) Case.java Grille.class: Grille.java Case.class $(JC) $(JFLAGS) Grille.java -FenetreJeu.class: FenetreJeu.java Grille.class - $(JC) $(JFLAGS) FenetreJeu.java +FenetreJeu.class: FenetreJeu.java Grille.class ControleurJeu.java + $(JC) $(JFLAGS) FenetreJeu.java ControleurJeu.java MenuPrincipal.class: MenuPrincipal.java ControleurMenu.java FenetreJeu.class $(JC) $(JFLAGS) MenuPrincipal.java ControleurMenu.java