134 lines
4.0 KiB
Java
134 lines
4.0 KiB
Java
//Tom Monin et Clément Martins
|
|
//Class pour des fonction static de jeu
|
|
//V2
|
|
|
|
|
|
import java.util.*;
|
|
import java.awt.event.*;
|
|
|
|
public class plateau{
|
|
//-------------------------Fonction plaçant les bombes aléatoirement------------------------
|
|
|
|
public static void setAllBombe(int nombre, int ligne, int collonne, Case[][] tableau0){
|
|
Random rand = new Random();
|
|
//on répète le nombre de fois le nombre de bombe a placer
|
|
for(int i=0; i<nombre; i++){
|
|
//on genere 2 chiffre aléatoire(ligne et collonne)
|
|
int x=rand.nextInt(ligne);
|
|
int y=rand.nextInt(collonne);
|
|
//si il n'y a pas de bombe ici
|
|
if(tableau0[x][y].getBombe()==false){
|
|
//on en place une
|
|
tableau0[x][y].setBombe();
|
|
}else{
|
|
//autrement nous recomencerons 1 fois de plus le tirage pour ne pas modifier le nombre de bombe
|
|
i--;
|
|
}
|
|
}
|
|
}
|
|
//-------------------------Fonction mettant le nombre de bombe voisin a chaque Case------------------
|
|
|
|
public static void setAllVoisin(Case[][] tableau0){
|
|
//nous parcourons le tableau du jeu
|
|
for(int i=0; i<tableau0.length; i++){
|
|
for(int t=0; t<tableau0[i].length; t++){
|
|
int voisin=0;
|
|
//nous regardons dans les cases adjacentes(si elles existe) si elle sont des bombes
|
|
if(i>0){
|
|
if(tableau0[i-1][t].getBombe()==true){
|
|
//si elle le sont alors nous augmentons le nombre de voisin
|
|
voisin++;
|
|
}
|
|
if(t>0){
|
|
if(tableau0[i-1][t-1].getBombe()==true){
|
|
voisin++;
|
|
}
|
|
}
|
|
if(t<tableau0[i].length-1){
|
|
if(tableau0[i-1][t+1].getBombe()==true){
|
|
voisin++;
|
|
}
|
|
}
|
|
}
|
|
if(i<tableau0.length-1){
|
|
if(tableau0[i+1][t].getBombe()==true){
|
|
voisin++;
|
|
}
|
|
if(t>0){
|
|
if(tableau0[i+1][t-1].getBombe()==true){
|
|
voisin++;
|
|
}
|
|
}
|
|
if(t<tableau0[i].length-1){
|
|
if(tableau0[i+1][t+1].getBombe()==true){
|
|
voisin++;
|
|
}
|
|
}
|
|
}
|
|
if(t>0){
|
|
if(tableau0[i][t-1].getBombe()==true){
|
|
voisin++;
|
|
}
|
|
}
|
|
if(t<tableau0[i].length-1){
|
|
if(tableau0[i][t+1].getBombe()==true){
|
|
voisin++;
|
|
}
|
|
}
|
|
//finalement nous mettons pour cette case sont nombre de voisin
|
|
tableau0[i][t].setVoisin(voisin);
|
|
}
|
|
}
|
|
}
|
|
|
|
//-------------------------------Fonction qui verifie l'etat de jeu(perdu, gagner)------------------------
|
|
|
|
public static int etatDeVictoire(Case[][] tableau0){
|
|
//variable pour une condition
|
|
int condition=0;
|
|
//nous parcourons le tableau du jeu
|
|
for(int i=0; i<tableau0.length; i++){
|
|
for(int t=0; t<tableau0[i].length; t++){
|
|
//si une case n'est pas visible mais que ce n'est pas une bombe
|
|
if(tableau0[i][t].getVisibiliter()==false && tableau0[i][t].getBombe()==false){
|
|
//nous augmentons la conditions pour montrer que la partie est toujour en cours
|
|
condition++;
|
|
}
|
|
//si une bombe est visible
|
|
if(tableau0[i][t].getVisibiliter()==true && tableau0[i][t].getBombe()==true){
|
|
//on retourne une valeur représentant la défaite: -1
|
|
return -1;
|
|
}
|
|
//si une bombe n'est pas susposer comme tel
|
|
if(tableau0[i][t].getSuspition2()==false && tableau0[i][t].getBombe()==true){
|
|
//nous augmentons la conditions pour montrer que la partie n'est pas fini
|
|
condition++;
|
|
}
|
|
}
|
|
}
|
|
//si la partie n'est pas fini
|
|
if(condition>0){
|
|
//on retourne 0 ici comme une valleur null
|
|
return 0;
|
|
}
|
|
//sinon le joueur a donc gagner on renvoie 1
|
|
return 1;
|
|
}
|
|
//-----------------------------------Fonction après victoire/defaite pour enlever les observateur a chaque Case--------------------------------
|
|
|
|
public static void removeListener(Case[][] tableau0){
|
|
//on parcour le tableau du jeu
|
|
for(int i=0; i<tableau0.length; i++){
|
|
for(int t=0; t<tableau0[i].length; t++){
|
|
//on récupere le tableau d'observateur
|
|
MouseListener[] tabListener;
|
|
tabListener=tableau0[i][t].getMouseListeners();
|
|
//que nous parcourons
|
|
for(int longeur=0; longeur<=tabListener.length-1; longeur++){
|
|
//on enleve a chaque case les observateur 1 par 1
|
|
tableau0[i][t].removeMouseListener(tabListener[longeur]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |