Ajout de la réaction en chaine quand une case est révélée
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
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]; }
|
||||
|
||||
}
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
doucoure@salle223-08.17695:1775656275
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import javax.swing.Swing.Utilities;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
public class ActionCase implements MouseListener {
|
||||
|
||||
private FenetreJeu fenetrejeu;
|
||||
private FenetreJeu fenetreJeu;
|
||||
private int ligne;
|
||||
private int colonne;
|
||||
|
||||
|
||||
+21
-2
@@ -16,7 +16,7 @@ public class FenetreJeu {
|
||||
int c = grille.getColonne();
|
||||
|
||||
fenetre = new JFrame("Demineur");
|
||||
fenetre.setDefaultCloseOpertion(JFrame.EXIT_ON_CLOSE);
|
||||
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
panneauGrille = new JPanel();
|
||||
panneauGrille.setLayout(new GridLayout(l, c));
|
||||
@@ -43,6 +43,24 @@ public class FenetreJeu {
|
||||
actualiserAffichage();
|
||||
}
|
||||
|
||||
public void revelerCaseProche(int l, int c){
|
||||
if (l < 0 || l >= grille.getLigne() || c < 0 || c >= grille.getColonne() )return;
|
||||
Case caseActuelle = grille.getCase(l, c);
|
||||
if (caseActuelle.getMarqueur() != 0 || caseActuelle.getEstRevelee() == true )return;
|
||||
caseActuelle.setEstRevelee(true);
|
||||
if(caseActuelle.getNbMinesautour() == 0){
|
||||
for(int i = -1; i <= 1; i++){
|
||||
for(int j = -1; j <= 1; j++){
|
||||
int vL = l + i;
|
||||
int vC = c + j;
|
||||
revelerCaseProche(vL,vC);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// logique du clic droit
|
||||
public void clicDroit(int l, int c) {
|
||||
Case caseCliquee = grille.getCase(l, c);
|
||||
@@ -63,11 +81,12 @@ public class FenetreJeu {
|
||||
caseCliquee.setEstRevelee(true);
|
||||
|
||||
} else {
|
||||
caseCliquee.setEstRevelee(true);
|
||||
revelerCaseProche(l,c);
|
||||
}
|
||||
actualiserAffichage();
|
||||
}
|
||||
|
||||
|
||||
// mise à jour du texte et couleurs de tous les boutons
|
||||
public void actualiserAffichage() {
|
||||
int l = grille.getLigne();
|
||||
|
||||
@@ -12,7 +12,7 @@ Quitter.class : Quitter.java
|
||||
FenetreJeu.class ActionCase.class : FenetreJeu.java ActionCase.java Grille.class
|
||||
javac -implicit:none FenetreJeu.java ActionCase.java
|
||||
|
||||
NouvellePartie.class : NouvellePartie.java Menu.class Grille.class FenetreJeu.class
|
||||
NouvellePartie.class : NouvellePartie.java Grille.class FenetreJeu.class
|
||||
javac -implicit:none NouvellePartie.java
|
||||
|
||||
Menu.class : Menu.java NouvellePartie.class Quitter.class
|
||||
|
||||
Reference in New Issue
Block a user