ajout victoire

This commit is contained in:
Haïssous Kayyissa 2022-05-10 11:52:26 +02:00
parent bd8d725cd1
commit e9916196dc
5 changed files with 39 additions and 13 deletions

View File

@ -52,6 +52,7 @@ public class Case extends JPanel {
if (this.getEntourage() == 0) { if (this.getEntourage() == 0) {
this.grille.setEntourageVisible(this); this.grille.setEntourageVisible(this);
} }
this.grille.verifVictoire();
} }
} }
@ -90,6 +91,7 @@ public class Case extends JPanel {
this.reperee=reperee; this.reperee=reperee;
if ((reperee)&&(minee)){ if ((reperee)&&(minee)){
this.deminee=true; this.deminee=true;
this.grille.verifVictoire();
} }
this.grille.MinesLeft(); this.grille.MinesLeft();
} }

View File

@ -10,12 +10,13 @@ public class EtatPartie extends JPanel {
this.setBackground( new Color(0, 236, 96)); this.setBackground( new Color(0, 236, 96));
this.setSize(200,100); this.setSize(200,100);
// On ajoute le compteur de mines restantes
setMinesLeft(mines); setMinesLeft(mines);
} }
// Méthode pour afficher le nombre de mines restantes // Méthode pour afficher le nombre de mines restantes
protected void setMinesLeft(int minesLeft){ public void setMinesLeft(int minesLeft){
this.removeAll(); this.removeAll();
this.add(new MineLeft(minesLeft,this.getSize())); this.add(new MineLeft(minesLeft,this.getSize()));
//System.out.println("Mines restantes : "+minesLeft); //System.out.println("Mines restantes : "+minesLeft);

5
FrameVictoire.java Normal file
View File

@ -0,0 +1,5 @@
public class FrameVictoire {
public FrameVictoire(){
System.out.println("Victoire!");
}
}

View File

@ -62,7 +62,7 @@ public class Grille extends JPanel {
int entourage = 0; int entourage = 0;
// On vérifie pour chaque case qu'elle n'est pas déjà à l'extrémité du plateau on cherche une case // On vérifie pour chaque case qu'elle n'est pas déjà à l'extrémité du plateau on cherche une case
// Mine au dessus à droite // Mine au dessus à droite
if ((i>colonnes)&&(i%colonnes!=colonnes-1)){ if ((i>=colonnes)&&(i%colonnes!=colonnes-1)){
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
if (caseMine[j]==i-colonnes+1){ if (caseMine[j]==i-colonnes+1){
entourage+=1; entourage+=1;
@ -70,7 +70,7 @@ public class Grille extends JPanel {
} }
} }
// Mine au dessus à gauche // Mine au dessus à gauche
if ((i>colonnes)&&(i%colonnes!=0)){ if ((i>=colonnes)&&(i%colonnes!=0)){
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
if (caseMine[j]==i-colonnes-1){ if (caseMine[j]==i-colonnes-1){
entourage+=1; entourage+=1;
@ -78,7 +78,7 @@ public class Grille extends JPanel {
} }
} }
// Mine en dessous à droite // Mine en dessous à droite
if ((i<=taille-colonnes)&&(i%colonnes!=colonnes-1)){ if ((i<taille-colonnes)&&(i%colonnes!=colonnes-1)){
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
if (caseMine[j]==i+colonnes+1){ if (caseMine[j]==i+colonnes+1){
entourage+=1; entourage+=1;
@ -86,7 +86,7 @@ public class Grille extends JPanel {
} }
} }
// Mine en bas à gauche // Mine en bas à gauche
if ((i<=taille-colonnes)&&(i%colonnes!=0)){ if ((i<taille-colonnes)&&(i%colonnes!=0)){
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
if (caseMine[j]==i+colonnes-1){ if (caseMine[j]==i+colonnes-1){
entourage+=1; entourage+=1;
@ -94,7 +94,7 @@ public class Grille extends JPanel {
} }
} }
// Mine au dessus // Mine au dessus
if (i>colonnes){ if (i>=colonnes){
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
if (caseMine[j]==i-colonnes){ if (caseMine[j]==i-colonnes){
entourage+=1; entourage+=1;
@ -102,7 +102,7 @@ public class Grille extends JPanel {
} }
} }
// Mine en dessous // Mine en dessous
if (i<=taille-colonnes){ if (i<taille-colonnes){
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
if (caseMine[j]==i+colonnes){ if (caseMine[j]==i+colonnes){
entourage+=1; entourage+=1;
@ -156,8 +156,7 @@ public class Grille extends JPanel {
// Méthode pour déterminer le nombre de mines restantes // Méthode pour déterminer le nombre de mines restantes
public void MinesLeft(){ public void MinesLeft(){
this.minesLeft=this.mines; this.minesLeft=this.mines;
for (int i=0;i<taille;i++){ for (int i=0;i<this.taille;i++){
//System.out.println("case repéree ? == "+plateau[i].getReperee());
if(plateau[i].getReperee()==true){ if(plateau[i].getReperee()==true){
this.minesLeft-=1; this.minesLeft-=1;
} }
@ -165,18 +164,31 @@ public class Grille extends JPanel {
this.banniere.setMinesLeft(this.minesLeft); this.banniere.setMinesLeft(this.minesLeft);
} }
// Méthode déterminant les conditions de victoire
public void verifVictoire(){
int casesDeminees=0;
for (int i=0;i<this.taille;i++){
if(plateau[i].getDeminee()==true){
casesDeminees+=1;
}
}
if (taille==casesDeminees){
new FrameVictoire();
}
}
// Méthode pour rendre visibles les cases autour d'un 0 // Méthode pour rendre visibles les cases autour d'un 0
public void setEntourageVisible(Case panel){ public void setEntourageVisible(Case panel){
for(int i=0; i<this.taille;i++){ for(int i=0; i<this.taille;i++){
if (plateau[i]==panel){ if (plateau[i]==panel){
// Mine au dessus à droite // Mine au dessus à droite
if ((i>colonnes)&&(i%colonnes!=colonnes-1)){ if ((i>=colonnes)&&(i%colonnes!=colonnes-1)){
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
plateau[i-colonnes+1].setVisible(); plateau[i-colonnes+1].setVisible();
} }
} }
// Mine au dessus à gauche // Mine au dessus à gauche
if ((i>colonnes)&&(i%colonnes!=0)){ if ((i>=colonnes)&&(i%colonnes!=0)){
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
plateau[i-colonnes-1].setVisible(); plateau[i-colonnes-1].setVisible();
} }
@ -194,7 +206,7 @@ public class Grille extends JPanel {
} }
} }
// Mine au dessus // Mine au dessus
if (i>colonnes){ if (i>=colonnes){
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
plateau[i-colonnes].setVisible(); plateau[i-colonnes].setVisible();
} }

View File

@ -1,5 +1,11 @@
public class Test { public class Test {
public static void main(String[] args) { public static void main(String[] args) {
new FrameJeu(15,20,10); new FrameJeu(15,20,5);
} }
} }
/* Flux de sortie représenté par la classe Output Stream
* Méthodes cruciales : void write(int);
* void flush();
*/