ajout de plein de fonctionalité (sauver quitter, fin de partie , reprendre , reveler tout )
This commit is contained in:
@@ -1,66 +0,0 @@
|
|||||||
import java.util.Random;
|
|
||||||
|
|
||||||
public class Grille {
|
|
||||||
|
|
||||||
private Case[][] grille;
|
|
||||||
private int ligne,colonne;
|
|
||||||
private Random generateur = new Random();
|
|
||||||
|
|
||||||
public Grille(int ligne,int colonne) {
|
|
||||||
this.ligne = ligne;
|
|
||||||
this.colonne = colonne;
|
|
||||||
this.grille = new Case[ligne][colonne];
|
|
||||||
for(int i =0;i<ligne;i++){
|
|
||||||
for(int j =0;j<colonne;j++){
|
|
||||||
this.grille[i][j] = new Case();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void placerMines(int nbMines){
|
|
||||||
int randomLigne,randomColonne;
|
|
||||||
for(int i=0;i<nbMines;i++){
|
|
||||||
randomLigne = generateur.nextInt(ligne);
|
|
||||||
randomColonne = generateur.nextInt(colonne);
|
|
||||||
if (grille[randomLigne][randomColonne].getEstMinee() == true){
|
|
||||||
i--; } else {
|
|
||||||
grille[randomLigne][randomColonne].setEstMinee(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void compterMinesVoisines(int l, int c){
|
|
||||||
int compteur = 0;
|
|
||||||
for(int i = -1; i <= 1; i++){
|
|
||||||
for(int j = -1; j <= 1; j++){
|
|
||||||
int vL = l + i;
|
|
||||||
int vC = c + j;
|
|
||||||
if(vL >= 0 && vL < ligne && vC >= 0 && vC < colonne){
|
|
||||||
if (grille[vL][vC].getEstMinee()) {
|
|
||||||
compteur++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
grille[l][c].setNbMinesautour(compteur);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void calculerToutesLesMines(){
|
|
||||||
for(int i =0;i<ligne;i++){
|
|
||||||
for(int j =0;j<colonne;j++){
|
|
||||||
compterMinesVoisines(i,j);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// interface graphique
|
|
||||||
|
|
||||||
public int getLigne() { return ligne; }
|
|
||||||
public int getColonne() { return colonne; }
|
|
||||||
public Case getCase(int l, int c) { return grille[l][c]; }
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
doucoure@salle223-08.17695:1775656275
|
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class ActionDemarrer implements ActionListener {
|
||||||
|
|
||||||
|
private JTextField champLignes;
|
||||||
|
private JTextField champColonnes;
|
||||||
|
private JTextField champMines;
|
||||||
|
private JFrame cible;
|
||||||
|
private Menu menuPrincipal;
|
||||||
|
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
// Vérife entre 4 et 30 ligne/colonne
|
||||||
|
if (l < 4 || l > 30 || c < 4 || c > 30) {
|
||||||
|
System.out.println("Erreur : Les dimensions doivent être comprises entre 4 et 30");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Véérife nb Mines
|
||||||
|
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);
|
||||||
|
|
||||||
|
// On ferme les deux fenêtres
|
||||||
|
cible.dispose();
|
||||||
|
menuPrincipal.getFenetre().dispose();
|
||||||
|
|
||||||
|
} catch (NumberFormatException ex) {
|
||||||
|
System.out.println("Erreur : Veuillez entrer des nombres entiers valides");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.ObjectInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class ActionReprendre implements ActionListener {
|
||||||
|
private Menu menu;
|
||||||
|
|
||||||
|
public ActionReprendre(Menu m) {
|
||||||
|
this.menu = m;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
try {
|
||||||
|
FileInputStream fichier = new FileInputStream("sauvegarde.ser");
|
||||||
|
ObjectInputStream flux = new ObjectInputStream(fichier);
|
||||||
|
|
||||||
|
Grille g = (Grille) flux.readObject();
|
||||||
|
|
||||||
|
flux.close();
|
||||||
|
fichier.close();
|
||||||
|
|
||||||
|
new FenetreJeu(g);
|
||||||
|
|
||||||
|
menu.getFenetre().dispose();
|
||||||
|
|
||||||
|
} catch (IOException | ClassNotFoundException ex) {
|
||||||
|
System.err.println("Erreur lors du chargement : " + ex.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
|
public class ActionRetourMenu implements ActionListener {
|
||||||
|
|
||||||
|
private JFrame fenetreJeu;
|
||||||
|
|
||||||
|
public ActionRetourMenu(JFrame f) {
|
||||||
|
this.fenetreJeu = f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
fenetreJeu.dispose();
|
||||||
|
new Menu();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class ActionSauverQuitter implements ActionListener {
|
||||||
|
|
||||||
|
private Grille grilleASauver;
|
||||||
|
|
||||||
|
public ActionSauverQuitter(Grille g) {
|
||||||
|
this.grilleASauver = g;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
try {
|
||||||
|
FileOutputStream fichier = new FileOutputStream("sauvegarde.ser");
|
||||||
|
ObjectOutputStream flux = new ObjectOutputStream(fichier);
|
||||||
|
|
||||||
|
flux.writeObject(grilleASauver);
|
||||||
|
|
||||||
|
flux.close();
|
||||||
|
fichier.close();
|
||||||
|
|
||||||
|
System.out.println("Partie sauvegardée avec succès !");
|
||||||
|
|
||||||
|
System.exit(0);
|
||||||
|
|
||||||
|
} catch (IOException ex) {
|
||||||
|
System.out.println("Erreur lors de la sauvegarde : " + ex.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
public class Case {
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public class Case implements Serializable {
|
||||||
|
|
||||||
private boolean estMinee;
|
private boolean estMinee;
|
||||||
|
private boolean estMineFatale;
|
||||||
private boolean estRevelee;
|
private boolean estRevelee;
|
||||||
private int marqueur;
|
private int marqueur;
|
||||||
private int nbMinesautour;
|
private int nbMinesautour;
|
||||||
@@ -8,6 +11,7 @@ public class Case {
|
|||||||
public Case() {
|
public Case() {
|
||||||
|
|
||||||
this.estMinee = false;
|
this.estMinee = false;
|
||||||
|
this.estMineFatale = false;
|
||||||
this.estRevelee = false;
|
this.estRevelee = false;
|
||||||
this.marqueur = 0;
|
this.marqueur = 0;
|
||||||
this.nbMinesautour = 0;
|
this.nbMinesautour = 0;
|
||||||
@@ -16,6 +20,9 @@ public class Case {
|
|||||||
public boolean getEstMinee() { return estMinee; }
|
public boolean getEstMinee() { return estMinee; }
|
||||||
public void setEstMinee(boolean min) { this.estMinee = min; }
|
public void setEstMinee(boolean min) { this.estMinee = min; }
|
||||||
|
|
||||||
|
public boolean getEstMineFatale() {return estMineFatale; }
|
||||||
|
public void setEstMineFatale(boolean b) {this.estMineFatale = b;}
|
||||||
|
|
||||||
public boolean getEstRevelee() { return estRevelee; }
|
public boolean getEstRevelee() { return estRevelee; }
|
||||||
public void setEstRevelee(boolean rev) { this.estRevelee = rev; }
|
public void setEstRevelee(boolean rev) { this.estRevelee = rev; }
|
||||||
|
|
||||||
|
|||||||
+124
-33
@@ -9,6 +9,8 @@ public class FenetreJeu {
|
|||||||
private JPanel panneauGrille;
|
private JPanel panneauGrille;
|
||||||
private JButton[][] boutons;
|
private JButton[][] boutons;
|
||||||
private Grille grille;
|
private Grille grille;
|
||||||
|
private boolean partieTerminee = false;
|
||||||
|
private JLabel labelStatut;
|
||||||
|
|
||||||
public FenetreJeu(Grille g) {
|
public FenetreJeu(Grille g) {
|
||||||
this.grille = g;
|
this.grille = g;
|
||||||
@@ -35,12 +37,57 @@ public class FenetreJeu {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fenetre.add(panneauGrille);
|
fenetre.setLayout(new BorderLayout());
|
||||||
fenetre.pack();
|
fenetre.add(panneauGrille, BorderLayout.CENTER);
|
||||||
fenetre.setLocationRelativeTo(null);
|
|
||||||
fenetre.setVisible(true);
|
|
||||||
|
|
||||||
actualiserAffichage();
|
// Panneau de contrôle en bas
|
||||||
|
JPanel panneauBas = new JPanel();
|
||||||
|
panneauBas.setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
labelStatut = new JLabel("Partie en cours...", SwingConstants.CENTER);
|
||||||
|
labelStatut.setFont(new Font("Arial", Font.BOLD, 14));
|
||||||
|
|
||||||
|
// pour aligner les boutons horizontalement
|
||||||
|
JPanel conteneurBoutons = new JPanel();
|
||||||
|
|
||||||
|
JButton boutonMenu = new JButton("Menu Principal");
|
||||||
|
boutonMenu.addActionListener(new ActionRetourMenu(fenetre));
|
||||||
|
|
||||||
|
JButton boutonSauver = new JButton("Sauver et Quitter");
|
||||||
|
boutonSauver.addActionListener(new ActionSauverQuitter(grille));
|
||||||
|
|
||||||
|
conteneurBoutons.add(boutonMenu);
|
||||||
|
conteneurBoutons.add(boutonSauver);
|
||||||
|
|
||||||
|
panneauBas.add(labelStatut, BorderLayout.NORTH);
|
||||||
|
panneauBas.add(conteneurBoutons, BorderLayout.SOUTH);
|
||||||
|
|
||||||
|
fenetre.add(panneauBas, BorderLayout.SOUTH);
|
||||||
|
|
||||||
|
fenetre.pack();
|
||||||
|
fenetre.setLocationRelativeTo(null);
|
||||||
|
fenetre.setVisible(true);
|
||||||
|
actualiserAffichage();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void verifierVictoire() {
|
||||||
|
int casesAReveler = (grille.getLigne() * grille.getColonne());
|
||||||
|
int nbMines = 0;
|
||||||
|
int nbRevelees = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < grille.getLigne(); i++) {
|
||||||
|
for (int j = 0; j < grille.getColonne(); j++) {
|
||||||
|
if (grille.getCase(i, j).getEstMinee()) nbMines++;
|
||||||
|
if (grille.getCase(i, j).getEstRevelee()) nbRevelees++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nbRevelees == (casesAReveler - nbMines)) {
|
||||||
|
partieTerminee = true;
|
||||||
|
System.out.println("Vous avez gagné !");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void revelerCaseProche(int l, int c){
|
public void revelerCaseProche(int l, int c){
|
||||||
@@ -61,8 +108,22 @@ public class FenetreJeu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void partiePerdu(){
|
||||||
|
for(int i =0; i<grille.getLigne(); i++){
|
||||||
|
for(int j=0;j < grille.getColonne();j++){
|
||||||
|
Case currentCase = grille.getCase(i, j);
|
||||||
|
if(currentCase.getEstMinee() || currentCase.getMarqueur() == 1) {
|
||||||
|
currentCase.setEstRevelee(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// logique du clic droit
|
// logique du clic droit
|
||||||
public void clicDroit(int l, int c) {
|
public void clicDroit(int l, int c) {
|
||||||
|
if (partieTerminee) return;
|
||||||
Case caseCliquee = grille.getCase(l, c);
|
Case caseCliquee = grille.getCase(l, c);
|
||||||
caseCliquee.boucleMarqueur();
|
caseCliquee.boucleMarqueur();
|
||||||
actualiserAffichage();
|
actualiserAffichage();
|
||||||
@@ -70,6 +131,7 @@ public class FenetreJeu {
|
|||||||
|
|
||||||
// logique clic gauche
|
// logique clic gauche
|
||||||
public void clicGauche(int l, int c) {
|
public void clicGauche(int l, int c) {
|
||||||
|
if (partieTerminee) return;
|
||||||
Case caseCliquee = grille.getCase(l, c);
|
Case caseCliquee = grille.getCase(l, c);
|
||||||
|
|
||||||
// secu on ne peut pas cliquer une une case avec un marqueur etoile ou ?
|
// secu on ne peut pas cliquer une une case avec un marqueur etoile ou ?
|
||||||
@@ -77,8 +139,11 @@ public class FenetreJeu {
|
|||||||
if (caseCliquee.getMarqueur() != 0) return;
|
if (caseCliquee.getMarqueur() != 0) return;
|
||||||
|
|
||||||
if (caseCliquee.getEstMinee()) {
|
if (caseCliquee.getEstMinee()) {
|
||||||
|
caseCliquee.setEstMineFatale(true);
|
||||||
System.out.println("BOOM ! Vous avez touché une mine... !");
|
System.out.println("BOOM ! Vous avez touché une mine... !");
|
||||||
caseCliquee.setEstRevelee(true);
|
caseCliquee.setEstRevelee(true);
|
||||||
|
partieTerminee = true;
|
||||||
|
partiePerdu();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
revelerCaseProche(l,c);
|
revelerCaseProche(l,c);
|
||||||
@@ -89,36 +154,62 @@ public class FenetreJeu {
|
|||||||
|
|
||||||
// mise à jour du texte et couleurs de tous les boutons
|
// mise à jour du texte et couleurs de tous les boutons
|
||||||
public void actualiserAffichage() {
|
public void actualiserAffichage() {
|
||||||
int l = grille.getLigne();
|
int l = grille.getLigne();
|
||||||
int c = grille.getColonne();
|
int c = grille.getColonne();
|
||||||
|
|
||||||
for (int i = 0; i < l; i++) {
|
for (int i = 0; i < l; i++) {
|
||||||
for (int j = 0; j < c; j++) {
|
for (int j = 0; j < c; j++) {
|
||||||
Case currentCase = grille.getCase(i, j);
|
Case currentCase = grille.getCase(i, j);
|
||||||
JButton btn = boutons[i][j];
|
JButton btn = boutons[i][j];
|
||||||
|
|
||||||
if (currentCase.getEstRevelee()) {
|
if (currentCase.getEstRevelee()) {
|
||||||
btn.setEnabled(false); // pour rendre le bouton incliquable
|
btn.setEnabled(false); // pour rendre le bouton incliquable
|
||||||
if (currentCase.getEstMinee()) {
|
|
||||||
btn.setText("¤");
|
if (currentCase.getEstMinee()) {
|
||||||
btn.setBackground(Color.RED);
|
// C'est une vraie mine
|
||||||
} else {
|
btn.setText("¤");
|
||||||
int nb = currentCase.getNbMinesautour();
|
if (currentCase.getEstMineFatale()) {
|
||||||
if (nb > 0) {
|
btn.setBackground(Color.RED);
|
||||||
btn.setText(String.valueOf(nb));
|
} else {
|
||||||
} else {
|
btn.setBackground(Color.ORANGE);
|
||||||
btn.setText(""); // case viiiide
|
}
|
||||||
}
|
|
||||||
}
|
} else {
|
||||||
} else {
|
// Ce n'est pas une mine
|
||||||
btn.setEnabled(true);
|
if (currentCase.getMarqueur() == 1) {
|
||||||
int mq = currentCase.getMarqueur();
|
// Erreur si le joueur a mis une fausse étoile
|
||||||
if (mq == 1) btn.setText("*");
|
btn.setText("X");
|
||||||
else if (mq == 2) btn.setText("?");
|
btn.setBackground(Color.YELLOW);
|
||||||
else btn.setText("");
|
} else {
|
||||||
}
|
// on affiche le chiffre ou rien
|
||||||
}
|
int nb = currentCase.getNbMinesautour();
|
||||||
}
|
if (nb > 0) {
|
||||||
|
btn.setText(String.valueOf(nb));
|
||||||
|
} else {
|
||||||
|
btn.setText(""); // case vide
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// La case est encore cachée
|
||||||
|
btn.setEnabled(true);
|
||||||
|
int mq = currentCase.getMarqueur();
|
||||||
|
if (mq == 1) btn.setText("★");
|
||||||
|
else if (mq == 2) btn.setText("?");
|
||||||
|
else btn.setText("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -1,6 +1,7 @@
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
public class Grille {
|
public class Grille implements Serializable {
|
||||||
|
|
||||||
private Case[][] grille;
|
private Case[][] grille;
|
||||||
private int ligne,colonne;
|
private int ligne,colonne;
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
Case.class : Case.java
|
Case.class : Case.java
|
||||||
javac -implicit:none Case.java
|
javac -implicit:none Case.java
|
||||||
|
|
||||||
@@ -9,19 +7,13 @@ Grille.class : Grille.java Case.class
|
|||||||
Quitter.class : Quitter.java
|
Quitter.class : Quitter.java
|
||||||
javac -implicit:none Quitter.java
|
javac -implicit:none Quitter.java
|
||||||
|
|
||||||
FenetreJeu.class ActionCase.class : FenetreJeu.java ActionCase.java Grille.class
|
Menu.class NouvellePartie.class ActionDemarrer.class FenetreJeu.class ActionCase.class ActionRetourMenu.class ActionSauverQuitter.class ActionReprendre.class : Menu.java NouvellePartie.java ActionDemarrer.java FenetreJeu.java ActionCase.java ActionRetourMenu.java ActionSauverQuitter.java ActionReprendre.java Grille.class Quitter.class
|
||||||
javac -implicit:none FenetreJeu.java ActionCase.java
|
javac -implicit:none Menu.java NouvellePartie.java ActionDemarrer.java FenetreJeu.java ActionCase.java ActionRetourMenu.java ActionSauverQuitter.java ActionReprendre.java
|
||||||
|
|
||||||
NouvellePartie.class : NouvellePartie.java Grille.class FenetreJeu.class
|
|
||||||
javac -implicit:none NouvellePartie.java
|
|
||||||
|
|
||||||
Menu.class : Menu.java NouvellePartie.class Quitter.class
|
|
||||||
javac -implicit:none Menu.java
|
|
||||||
|
|
||||||
Demineur.class : Demineur.java Menu.class
|
Demineur.class : Demineur.java Menu.class
|
||||||
javac -implicit:none Demineur.java
|
javac -implicit:none Demineur.java
|
||||||
|
|
||||||
run : Demineur.class Menu.class
|
run : Demineur.class
|
||||||
java Demineur
|
java Demineur
|
||||||
|
|
||||||
clean :
|
clean :
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
public class Menu {
|
public class Menu {
|
||||||
|
|
||||||
@@ -10,6 +11,7 @@ public class Menu {
|
|||||||
private JButton boutonQuitter;
|
private JButton boutonQuitter;
|
||||||
private GridLayout gestionnaire;
|
private GridLayout gestionnaire;
|
||||||
|
|
||||||
|
|
||||||
public Menu() {
|
public Menu() {
|
||||||
fenetre = new JFrame();
|
fenetre = new JFrame();
|
||||||
fenetre.setSize(300,300);
|
fenetre.setSize(300,300);
|
||||||
@@ -27,6 +29,12 @@ public class Menu {
|
|||||||
boutonNouvellePartie.addActionListener(new NouvellePartie(this));
|
boutonNouvellePartie.addActionListener(new NouvellePartie(this));
|
||||||
panneauMenu.add(boutonNouvellePartie);
|
panneauMenu.add(boutonNouvellePartie);
|
||||||
boutonReprendre = new JButton("Reprendre");
|
boutonReprendre = new JButton("Reprendre");
|
||||||
|
File f = new File("sauvegarde.ser");
|
||||||
|
if (f.exists()) {
|
||||||
|
boutonReprendre.addActionListener(new ActionReprendre(this));
|
||||||
|
}else {
|
||||||
|
boutonReprendre.setEnabled(false);
|
||||||
|
}
|
||||||
panneauMenu.add(boutonReprendre);
|
panneauMenu.add(boutonReprendre);
|
||||||
boutonQuitter = new JButton("Quitter");
|
boutonQuitter = new JButton("Quitter");
|
||||||
boutonQuitter.addActionListener(new Quitter());
|
boutonQuitter.addActionListener(new Quitter());
|
||||||
|
|||||||
+24
-9
@@ -1,5 +1,7 @@
|
|||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
// Action pour lance une nouvelle partie
|
// Action pour lance une nouvelle partie
|
||||||
|
|
||||||
@@ -12,17 +14,30 @@ public class NouvellePartie implements ActionListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
System.out.println("Lancement de la nouvelle partie...");
|
JFrame fenetreConfig = new JFrame();
|
||||||
// cache menu
|
fenetreConfig.setSize(300,250);
|
||||||
menu.getFenetre().setVisible(false);
|
fenetreConfig.setLocation(100,100);
|
||||||
|
fenetreConfig.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||||
|
fenetreConfig.setVisible(true);
|
||||||
|
GridLayout g = new GridLayout(4, 2);
|
||||||
|
fenetreConfig.setLayout(g);
|
||||||
|
JTextField champLignes = new JTextField("10");
|
||||||
|
JTextField champColonnes = new JTextField("10");
|
||||||
|
JTextField champMines = new JTextField("10");
|
||||||
|
JButton demarrer = new JButton("Démarrer");
|
||||||
|
|
||||||
//grille test (10x10 avec 10 mines)
|
fenetreConfig.add(new JLabel("Ligne"));
|
||||||
Grille g = new Grille(10, 10);
|
fenetreConfig.add(champLignes);
|
||||||
g.placerMines(10);
|
fenetreConfig.add(new JLabel("Colonne"));
|
||||||
g.calculerToutesLesMines();
|
fenetreConfig.add(champColonnes);
|
||||||
|
fenetreConfig.add(new JLabel("Nb Mine"));
|
||||||
|
fenetreConfig.add(champMines);
|
||||||
|
fenetreConfig.add(new JLabel(" "));
|
||||||
|
fenetreConfig.add(demarrer);
|
||||||
|
|
||||||
// on lance l'interface graphique du jeu
|
demarrer.addActionListener(new ActionDemarrer(champLignes, champColonnes, champMines, fenetreConfig, menu));
|
||||||
new FenetreJeu(g);
|
|
||||||
|
fenetreConfig.setVisible(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user