condition de victoire ajouter

This commit is contained in:
martins 2022-04-28 20:43:37 +02:00
parent 4f72ac99a1
commit 4542c594ba
8 changed files with 85 additions and 86 deletions

Binary file not shown.

View File

@ -46,6 +46,13 @@ public class Case extends JComponent{
return false;
}
}
public boolean getSuspition2(){
if(this.suspition==1){
return true;
}else{
return false;
}
}
public boolean getVisibiliter(){
return this.visibilite;
}

Binary file not shown.

View File

@ -29,8 +29,7 @@ public class main_ex{
fenetre.add(tab[i][t]);
}
}
plateau plat = new plateau(tab);
plat.setAllBombe(8, ligne, collonne);
plat.setAllVoisin();
plateau.setAllBombe(8, ligne, collonne, tab);
plateau.setAllVoisin(tab);
}
}

Binary file not shown.

View File

@ -10,7 +10,6 @@ public class observateurCase implements MouseListener{
private Case[][] tableau;
private plateau plat;
public observateurCase(int ligne0, int collonne0, Case[][] tableau0){
// pour savoir si c'est l'observateur de la fleche de gauche ou droite
this.ligne=ligne0;
this.collonne=collonne0;
this.tableau=tableau0;
@ -18,17 +17,31 @@ public class observateurCase implements MouseListener{
@Override
public void mouseClicked(MouseEvent evenement){
if(evenement.getButton() == MouseEvent.BUTTON1){
if(this.tableau[this.ligne][this.collonne].getSuspition()==false){
if(this.tableau[this.ligne][this.collonne].getSuspition()==false && this.tableau[this.ligne][this.collonne].getVisibiliter()==false){
this.tableau[this.ligne][this.collonne].setVisibiliter(true);
this.tableau[this.ligne][this.collonne].repaint();
if(this.tableau[this.ligne][this.collonne].getVoisin()==0){
if(this.tableau[this.ligne][this.collonne].getVoisin()==0 && this.tableau[this.ligne][this.collonne].getBombe()==false){
this.cliqueEvident(this.ligne, this.collonne);
}
int resultat=plateau.etatDeVictoire(this.tableau);
if(resultat==-1){
plateau.perduGagner(this.tableau);
}
if(resultat==1){
plateau.perduGagner(this.tableau);
}
}
}
if(evenement.getButton() == MouseEvent.BUTTON3){
this.tableau[this.ligne][this.collonne].suspition();
this.tableau[this.ligne][this.collonne].repaint();
int resultat=plateau.etatDeVictoire(this.tableau);
if(resultat==-1){
System.out.println("perdu");
}
if(resultat==1){
System.out.println("gagner");
}
}
}
@Override // un bouton cliqué
@ -47,9 +60,13 @@ public class observateurCase implements MouseListener{
}
private void cliqueEvident(int ligneDelta, int collonneDelta){
this.affichageVoisinEvident(ligneDelta, collonneDelta);
if(ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta].getBombe()==false){
this.haut(ligneDelta-1, collonneDelta);
}
if(collonneDelta>0 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta-1].getBombe()==false){
this.diaghautgauche(ligneDelta-1, collonneDelta-1);
}
if(ligneDelta<tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta].getBombe()==false){
this.bas(ligneDelta+1, collonneDelta);
}
@ -59,9 +76,6 @@ public class observateurCase implements MouseListener{
if(collonneDelta>0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){
this.gauche(ligneDelta, collonneDelta-1);
}
if(collonneDelta>0 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta-1].getBombe()==false){
this.diaghautgauche(ligneDelta-1, collonneDelta-1);
}
if(collonneDelta>0 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta-1].getBombe()==false){
this.diagbasgauche(ligneDelta+1, collonneDelta-1);
}
@ -79,24 +93,18 @@ public class observateurCase implements MouseListener{
if(ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta].getBombe()==false){
this.haut(ligneDelta-1, collonneDelta);
}
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){
this.droite(ligneDelta, collonneDelta+1);
}
if(collonneDelta>0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){
this.gauche(ligneDelta, collonneDelta-1);
}
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){
this.droite(ligneDelta, collonneDelta+1);
}
if(collonneDelta>0 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta-1].getBombe()==false){
this.diaghautgauche(ligneDelta-1, collonneDelta-1);
}
if(collonneDelta>0 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta-1].getBombe()==false){
this.diagbasgauche(ligneDelta+1, collonneDelta-1);
}
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta+1].getBombe()==false){
this.diaghautdroite(ligneDelta-1, collonneDelta+1);
}
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta+1].getBombe()==false){
this.diagbasdroite(ligneDelta+1, collonneDelta+1);
}
}
private void bas(int ligneDelta, int collonneDelta){
this.tableau[ligneDelta][collonneDelta].setVisibiliter(true);
@ -105,21 +113,15 @@ public class observateurCase implements MouseListener{
if(ligneDelta<tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta].getBombe()==false){
this.bas(ligneDelta+1, collonneDelta);
}
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){
this.droite(ligneDelta, collonneDelta+1);
}
if(collonneDelta>0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){
this.gauche(ligneDelta, collonneDelta-1);
}
if(collonneDelta>0 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta-1].getBombe()==false){
this.diaghautgauche(ligneDelta-1, collonneDelta-1);
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){
this.droite(ligneDelta, collonneDelta+1);
}
if(collonneDelta>0 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta-1].getBombe()==false){
this.diagbasgauche(ligneDelta+1, collonneDelta-1);
}
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta+1].getBombe()==false){
this.diaghautdroite(ligneDelta-1, collonneDelta+1);
}
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta+1].getBombe()==false){
this.diagbasdroite(ligneDelta+1, collonneDelta+1);
}
@ -143,12 +145,6 @@ public class observateurCase implements MouseListener{
if(collonneDelta>0 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta-1].getBombe()==false){
this.diagbasgauche(ligneDelta+1, collonneDelta-1);
}
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta+1].getBombe()==false){
this.diaghautdroite(ligneDelta-1, collonneDelta+1);
}
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta+1].getBombe()==false){
this.diagbasdroite(ligneDelta+1, collonneDelta+1);
}
}
private void droite(int ligneDelta, int collonneDelta){
this.tableau[ligneDelta][collonneDelta].setVisibiliter(true);
@ -163,12 +159,6 @@ public class observateurCase implements MouseListener{
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){
this.droite(ligneDelta, collonneDelta+1);
}
if(collonneDelta>0 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta-1].getBombe()==false){
this.diaghautgauche(ligneDelta-1, collonneDelta-1);
}
if(collonneDelta>0 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta-1].getBombe()==false){
this.diagbasgauche(ligneDelta+1, collonneDelta-1);
}
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta+1].getBombe()==false){
this.diaghautdroite(ligneDelta-1, collonneDelta+1);
}
@ -183,12 +173,6 @@ public class observateurCase implements MouseListener{
if(ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta].getBombe()==false){
this.haut(ligneDelta-1, collonneDelta);
}
if(ligneDelta<tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta].getBombe()==false){
this.bas(ligneDelta+1, collonneDelta);
}
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){
this.droite(ligneDelta, collonneDelta+1);
}
if(collonneDelta>0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){
this.gauche(ligneDelta, collonneDelta-1);
}
@ -206,15 +190,9 @@ public class observateurCase implements MouseListener{
this.tableau[ligneDelta][collonneDelta].setVisibiliter(true);
this.tableau[ligneDelta][collonneDelta].repaint();
this.affichageVoisinEvident(ligneDelta, collonneDelta);
if(ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta].getBombe()==false){
this.haut(ligneDelta-1, collonneDelta);
}
if(ligneDelta<tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta].getBombe()==false){
this.bas(ligneDelta+1, collonneDelta);
}
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){
this.droite(ligneDelta, collonneDelta+1);
}
if(collonneDelta>0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){
this.gauche(ligneDelta, collonneDelta-1);
}
@ -235,15 +213,9 @@ public class observateurCase implements MouseListener{
if(ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta].getBombe()==false){
this.haut(ligneDelta-1, collonneDelta);
}
if(ligneDelta<tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta].getBombe()==false){
this.bas(ligneDelta+1, collonneDelta);
}
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){
this.droite(ligneDelta, collonneDelta+1);
}
if(collonneDelta>0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){
this.gauche(ligneDelta, collonneDelta-1);
}
if(collonneDelta>0 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta-1].getBombe()==false){
this.diaghautgauche(ligneDelta-1, collonneDelta-1);
}
@ -258,18 +230,12 @@ public class observateurCase implements MouseListener{
this.tableau[ligneDelta][collonneDelta].setVisibiliter(true);
this.tableau[ligneDelta][collonneDelta].repaint();
this.affichageVoisinEvident(ligneDelta, collonneDelta);
if(ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta].getBombe()==false){
this.haut(ligneDelta-1, collonneDelta);
}
if(ligneDelta<tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta].getBombe()==false){
this.bas(ligneDelta+1, collonneDelta);
}
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){
this.droite(ligneDelta, collonneDelta+1);
}
if(collonneDelta>0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){
this.gauche(ligneDelta, collonneDelta-1);
}
if(collonneDelta>0 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta-1].getBombe()==false){
this.diagbasgauche(ligneDelta+1, collonneDelta-1);
}

Binary file not shown.

View File

@ -1,68 +1,95 @@
import java.util.*;
import java.awt.event.*;
public class plateau{
private Case[][] tableau;
public plateau(Case[][] tableau0){
this.tableau=tableau0;
}
public void setAllBombe(int nombre, int ligne, int collonne){
public static void setAllBombe(int nombre, int ligne, int collonne, Case[][] tableau0){
Random rand = new Random();
for(int i=0; i<nombre; i++){
int x=rand.nextInt(ligne);
int y=rand.nextInt(collonne);
if(this.tableau[x][y].getBombe()==false){
this.tableau[x][y].setBombe();
if(tableau0[x][y].getBombe()==false){
tableau0[x][y].setBombe();
}else{
i--;
}
}
}
public void setAllVoisin(){
for(int i=0; i<tableau.length; i++){
for(int t=0; t<tableau[i].length; t++){
public static void setAllVoisin(Case[][] tableau0){
for(int i=0; i<tableau0.length; i++){
for(int t=0; t<tableau0[i].length; t++){
int voisin=0;
if(i>0){
if(tableau[i-1][t].getBombe()==true){
if(tableau0[i-1][t].getBombe()==true){
voisin++;
}
if(t>0){
if(tableau[i-1][t-1].getBombe()==true){
if(tableau0[i-1][t-1].getBombe()==true){
voisin++;
}
}
if(t<tableau[i].length-1){
if(tableau[i-1][t+1].getBombe()==true){
if(t<tableau0[i].length-1){
if(tableau0[i-1][t+1].getBombe()==true){
voisin++;
}
}
}
if(i<tableau.length-1){
if(tableau[i+1][t].getBombe()==true){
if(i<tableau0.length-1){
if(tableau0[i+1][t].getBombe()==true){
voisin++;
}
if(t>0){
if(tableau[i+1][t-1].getBombe()==true){
if(tableau0[i+1][t-1].getBombe()==true){
voisin++;
}
}
if(t<tableau[i].length-1){
if(tableau[i+1][t+1].getBombe()==true){
if(t<tableau0[i].length-1){
if(tableau0[i+1][t+1].getBombe()==true){
voisin++;
}
}
}
if(t>0){
if(tableau[i][t-1].getBombe()==true){
if(tableau0[i][t-1].getBombe()==true){
voisin++;
}
}
if(t<tableau[i].length-1){
if(tableau[i][t+1].getBombe()==true){
if(t<tableau0[i].length-1){
if(tableau0[i][t+1].getBombe()==true){
voisin++;
}
}
tableau[i][t].setVoisin(voisin);
tableau0[i][t].setVoisin(voisin);
}
}
}
public static int etatDeVictoire(Case[][] tableau0){
int condition=0;
for(int i=0; i<tableau0.length; i++){
for(int t=0; t<tableau0[i].length; t++){
if(tableau0[i][t].getVisibiliter()==false && tableau0[i][t].getBombe()==false){
condition++;
}
if(tableau0[i][t].getVisibiliter()==true && tableau0[i][t].getBombe()==true){
return -1;
}
if(tableau0[i][t].getSuspition2()==false && tableau0[i][t].getBombe()==true){
condition++;
}
}
}
if(condition>0){
return 0;
}
return 1;
}
public static void perduGagner(Case[][] tableau0){
for(int i=0; i<tableau0.length; i++){
for(int t=0; t<tableau0[i].length; t++){
MouseListener[] tabListener;
tabListener=tableau0[i][t].getMouseListeners();
for(int longeur=0; longeur<=tabListener.length-1; longeur++){
tableau0[i][t].removeMouseListener(tabListener[longeur]);
}
}
}
}