suite du traville avec grille et cas
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Case implements Serializable {
|
||||
private boolean minee;
|
||||
private boolean revelee;
|
||||
private int marqueur;
|
||||
private int nbMinesVoisines;
|
||||
|
||||
public Case() {
|
||||
this.minee = false;
|
||||
this.revelee = false;
|
||||
this.marqueur = 0;
|
||||
this.nbMinesVoisines = 0;
|
||||
}
|
||||
|
||||
public boolean isMinee() { return this.minee; }
|
||||
public boolean isRevelee() { return this.revelee; }
|
||||
public int getMarqueur() { return this.marqueur; }
|
||||
public int getNbMinesVoisines() { return this.nbMinesVoisines; }
|
||||
|
||||
public void setMinee(boolean m) { this.minee = m; }
|
||||
public void setRevelee(boolean r) { this.revelee = r; }
|
||||
public void setNbMinesVoisines(int n) { this.nbMinesVoisines = n; }
|
||||
|
||||
public void changerMarqueur() {
|
||||
this.marqueur = (this.marqueur + 1) % 3;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
|
||||
public class ControleurMenu implements ActionListener {
|
||||
|
||||
private MenuPrincipal menu;
|
||||
|
||||
|
||||
public ControleurMenu(MenuPrincipal m) {
|
||||
this.menu = m;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent evenement) {
|
||||
if (evenement.getSource() == this.menu.getBtnNouvellePartie()) {
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
|
||||
public class FenetreJeu extends JFrame {
|
||||
|
||||
private Grille grille;
|
||||
|
||||
|
||||
public FenetreJeu(Grille g) {
|
||||
super("Démineur - Partie en cours");
|
||||
this.grille = g;
|
||||
|
||||
this.setSize(600, 600);
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
this.setLayout(new BorderLayout());
|
||||
|
||||
JPanel panneauGrille = new JPanel();
|
||||
|
||||
panneauGrille.setLayout(new GridLayout(10, 10));
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
for (int j = 0; j < 10; j++) {
|
||||
JButton boutonCase = new JButton("?");
|
||||
panneauGrille.add(boutonCase);
|
||||
}
|
||||
}
|
||||
|
||||
this.add(panneauGrille, BorderLayout.CENTER);
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
import java.io.Serializable;
|
||||
import java.util.Random;
|
||||
|
||||
public class Grille implements Serializable {
|
||||
private Case[][] plateau;
|
||||
private int lignes;
|
||||
private int colonnes;
|
||||
private int mines;
|
||||
|
||||
|
||||
public Grille(int l, int c, int m) {
|
||||
this.lignes = l;
|
||||
this.colonnes = c;
|
||||
this.mines = m;
|
||||
|
||||
this.plateau = new Case[this.lignes][this.colonnes];
|
||||
|
||||
for (int i = 0; i < this.lignes; i++) {
|
||||
for (int j = 0; j < this.colonnes; j++) {
|
||||
this.plateau[i][j] = new Case();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
JC = javac
|
||||
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
|
||||
|
||||
MenuPrincipal.class: MenuPrincipal.java ControleurMenu.java FenetreJeu.class
|
||||
$(JC) $(JFLAGS) MenuPrincipal.java ControleurMenu.java
|
||||
|
||||
run: all
|
||||
java MenuPrincipal
|
||||
|
||||
clean:
|
||||
rm -f *.class
|
||||
@@ -0,0 +1,70 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* Fenêtre principale affichant le menu du Démineur.
|
||||
*/
|
||||
public class MenuPrincipal extends JFrame {
|
||||
|
||||
private JButton btnNouvellePartie;
|
||||
private JButton btnReprendre;
|
||||
private JButton btnQuitter;
|
||||
|
||||
/**
|
||||
* Constructeur du menu principal.
|
||||
*/
|
||||
public MenuPrincipal() {
|
||||
// Configuration de la fenêtre (héritée de JFrame)
|
||||
super("Démineur - Menu Principal");
|
||||
this.setSize(300, 250);
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
// Mise en page principale
|
||||
this.setLayout(new BorderLayout());
|
||||
|
||||
// Titre en haut
|
||||
JLabel etiquetteTitre = new JLabel("DÉMINEUR");
|
||||
etiquetteTitre.setHorizontalAlignment(JLabel.CENTER);
|
||||
this.add(etiquetteTitre, BorderLayout.NORTH);
|
||||
|
||||
// Panneau pour les boutons au centre
|
||||
JPanel panneauBoutons = new JPanel();
|
||||
panneauBoutons.setLayout(new GridLayout(3, 1)); // 3 lignes, 1 colonne
|
||||
|
||||
// Création des boutons
|
||||
this.btnNouvellePartie = new JButton("Commencer une nouvelle partie");
|
||||
this.btnReprendre = new JButton("Reprendre la partie précédente");
|
||||
this.btnQuitter = new JButton("Quitter");
|
||||
|
||||
// Désactivation du bouton "Reprendre" par défaut (comme demandé dans le sujet)
|
||||
this.btnReprendre.setEnabled(false);
|
||||
|
||||
// Ajout des boutons au panneau
|
||||
panneauBoutons.add(this.btnNouvellePartie);
|
||||
panneauBoutons.add(this.btnReprendre);
|
||||
panneauBoutons.add(this.btnQuitter);
|
||||
|
||||
// Ajout du panneau au centre de la fenêtre
|
||||
this.add(panneauBoutons, BorderLayout.CENTER);
|
||||
|
||||
// Connexion avec l'observateur (le contrôleur)
|
||||
ControleurMenu observateur = new ControleurMenu(this);
|
||||
this.btnNouvellePartie.addActionListener(observateur);
|
||||
this.btnReprendre.addActionListener(observateur);
|
||||
this.btnQuitter.addActionListener(observateur);
|
||||
}
|
||||
|
||||
// --- Accesseurs pour que l'observateur puisse identifier les boutons ---
|
||||
public JButton getBtnNouvellePartie() { return this.btnNouvellePartie; }
|
||||
public JButton getBtnReprendre() { return this.btnReprendre; }
|
||||
public JButton getBtnQuitter() { return this.btnQuitter; }
|
||||
|
||||
/**
|
||||
* Méthode principale pour lancer le programme.
|
||||
* @param args arguments de la ligne de commande (inutilisés)
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
MenuPrincipal menu = new MenuPrincipal();
|
||||
menu.setVisible(true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user