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