SAE21_2021/CASE/plateau.java
2022-04-28 21:31:03 +02:00

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 perduGagner(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]);
}
}
}
}
}