import javax.swing.*;
import java.awt.*;
import java.util.Random;
import java.util.Arrays;
/**
* La classe Grille
correspond à une grille de jeu
* elle genère un tableau de case et une Bannière
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Grille extends JPanel{
/**
* Banniere
*/
private Banniere banniere;
/**
* Dimension de la grille
*/
private Dimension grilleSize=new Dimension(0,0);
/**
* tableau des cases de la partie
*/
private Case[] plateau;
/**
* nombre de colonnes
*/
private int colonnes;
/**
* nombre de lignes
*/
private int lignes;
/**
* nombre de cases
*/
private int taille;
/**
* nombre de mines
*/
private int mines;
/**
* nombre de mines restantes à trouver
*/
private int minesLeft;
/**
* statut si la partie est en cours ou non
*/
private boolean enJeu;
/**
* fenetre de Jeu
*/
private FrameJeu fenetre;
/**
* Définition du constructeur qui correspond à une nouvelle grille de jeu
* @param lignes nombre de lignes
* @param colonnes nombre de colonnes
* @param mines nombre de mines
* @param fenetre fenetre de Jeu
* @param menu fenetre du menu rattaché
*/
public Grille(int lignes, int colonnes, int mines, FrameJeu fenetre, FrameMenu menu){
super();
this.colonnes=colonnes;
this.lignes=lignes;
this.taille=lignes*colonnes;
this.mines=mines;
this.minesLeft=mines;
this.enJeu=true;
this.fenetre=fenetre;
// Découpage de l'espace en fonction des paramètres pour la mise en place de la grille
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.grilleSize = new Dimension(((screenSize.height*3/4)/lignes)*colonnes, screenSize.height*3/4 );
Dimension caseSize = new Dimension(this.grilleSize.height/lignes,this.grilleSize.height/lignes);
GridLayout damier = new GridLayout(lignes,colonnes);
Banniere banniere = new Banniere(mines,this.fenetre, menu, this);
this.banniere=banniere;
this.setLayout(damier);
this.setSize(grilleSize);
// On génère le plateau contenant les cases
GenererPlateau(caseSize);
// Instalation des mines
// Création d'un tableau de nombres aléatoires pour savoir où les placer
int[] caseMine = new int[mines];
Random rand = new Random();
// On initialise les emplacements des mines
caseMine[0] = rand.nextInt(taille);
for (int i=1;i=colonnes)&&(i%colonnes!=colonnes-1)){
for (int j=0;j=colonnes)&&(i%colonnes!=0)){
for (int j=0;j=colonnes){
for (int j=0;j=colonnes)&&(i%colonnes!=colonnes-1)){
for (int j=0;j=colonnes)&&(i%colonnes!=0)){
for (int j=0;j=colonnes){
for (int j=0;j