Votre question

[Résolu] démineur JAVA processing

Tags :
  • Java
Dernière réponse : dans Programmation
28 Mai 2015 20:32:12

Bonjour,
je suis en train de faire un démineur et je suis bloquer, je n'arrive pas à résoudre mon problème. (La solution vous paraîtra sans doute évidente mais je débute en JAVA). Pour faire simple lorsque que je clique sur une case du jeu, celle ci est censé afficher le nombre de mines, ce qu'elle fait. Le problème est que si je découvre une case 1 , alors toute les cases découvertes prendront la valeur 1 ce qui n'est pas vraiment prévu à la base. Je vous laisse le code en espérant que certains parmi-vous pourront m'aider.


int nbTotalBombes=9;
int nbDeLignes=6;
int nbDeColonnes=10;
int tailleCase=100;
int[][] tableauDeJeu=new int[nbDeLignes][nbDeColonnes];
int numColonneCliquee;
int numLigneCliquee;


void afficher(int[][] tableauDeJeu){

color couleur;
for(int numLigne=1;numLigne<tableauDeJeu.length-1;numLigne++){
for(int numColonne=1; numColonne<tableauDeJeu[0].length-1; numColonne++){
couleur=0;


if(tableauDeJeu[numLigne][numColonne]==0){ //0=>case sans bombes non cliquée
couleur=color(120,120,120);
fill(couleur);
rect((numColonne-1)*tailleCase,(numLigne-1)*tailleCase,tailleCase,tailleCase);
}
else if(tableauDeJeu[numLigne][numColonne]==1){ //1=>case sans bombe cliquée
couleur=color(255);
fill(couleur);
rect((numColonne-1)*tailleCase,(numLigne-1)*tailleCase,tailleCase,tailleCase);
fill(255,0,0);
text((NbDeBombesAutour(tableauDeJeu, numLigneCliquee, numColonneCliquee)), (numColonne-1)*tailleCase+tailleCase/2, (numLigne-1)*tailleCase+tailleCase/2);
}
else if(tableauDeJeu[numLigne][numColonne]==2){ //2=>bombe cachée
couleur=color(120,120,120);
fill(couleur);
rect((numColonne-1)*tailleCase,(numLigne-1)*tailleCase,tailleCase,tailleCase);
}
else if(tableauDeJeu[numLigne][numColonne]==3){ //3=>bombe trouvée
couleur=color(255,0,0);
fill(couleur);
rect((numColonne-1)*tailleCase,(numLigne-1)*tailleCase,tailleCase,tailleCase);
}


}
}
}

void mousePressed(){

numColonneCliquee=floor(mouseX/tailleCase)+1;//permet de connaître l'indice de la colonne cliquée en fonction des coordonnées qu'avait la souris quand on a cliqué
numLigneCliquee=floor(mouseY/tailleCase)+1;

print (NbDeBombesAutour(tableauDeJeu, numLigneCliquee, numColonneCliquee));

if(tableauDeJeu[numLigneCliquee][numColonneCliquee]==0){
tableauDeJeu[numLigneCliquee][numColonneCliquee]=1;
}
else if(tableauDeJeu[numLigneCliquee][numColonneCliquee]==2){
tableauDeJeu[numLigneCliquee][numColonneCliquee]=3;

}
}


void setup(){

size(tailleCase*(nbDeColonnes-2),tailleCase*(nbDeLignes-2)); //on dimensionne la fenêtre en fonction du nombre de case et de leur taille

//initialisation du tableauDeJeuleau : on le remplit de 0
for(int i=0;i<nbDeLignes;i++){
for(int j=0;j<nbDeColonnes;j++){
tableauDeJeu[j]=0;
}
}
placerBombes(tableauDeJeu);



afficher(tableauDeJeu);

}

void draw(){
afficher(tableauDeJeu);
}








int NbDeBombesAutour(int[][]tab,int numLigne,int numColonne){
int compteur=0;

if(tab[numLigne][numColonne-1]==2){ //0;-1
compteur=compteur+1;
}
if(tab[numLigne][numColonne+1]==2){ //0;1
compteur=compteur+1;
}
if(tab[numLigne+1][numColonne-1]==2){ //1;-1
compteur=compteur+1;
}
if(tab[numLigne+1][numColonne]==2){ //1;0
compteur=compteur+1;
}
if(tab[numLigne+1][numColonne+1]==2){ //1;1
compteur=compteur+1;
}
if(tab[numLigne-1][numColonne-1]==2){ //-1;-1
compteur=compteur+1;
}
if(tab[numLigne-1][numColonne]==2){ //-1;0
compteur=compteur+1;
}
if(tab[numLigne-1][numColonne+1]==2){ //-1;1
compteur=compteur+1;
}

return(compteur);

}










void placerBombes(int[][]tab){ //placer bombes
int nbDeLignes=tab.length;
int nbDeColonnes=tab[0].length;
int[] OrdBombes=new int [nbDeLignes];
int[] AbsBombes=new int [nbDeColonnes];

for(int i=1; i<=nbTotalBombes; i++){
int numLigneBombe=int(random(1, nbDeLignes-1));
int numColonneBombe=int(random(1, nbDeColonnes-1));
print(numLigneBombe+" "+ numColonneBombe);
tab[numLigneBombe][numColonneBombe]=2;

}

}


Autres pages sur : demineur java processing

28 Mai 2015 22:47:11

int NbDeBombesAutour(int[][]tab,int numLigne,int numColonne){
int compteur=0;

if(tab[numLigne][numColonne-1]==2){ //0;-1
compteur=compteur+1;
}
if(tab[numLigne][numColonne+1]==2){ //0;1
compteur=compteur+
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS