SAE21_2021/CASE/plateau.java

134 lines
4.0 KiB
Java
Raw Normal View History

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