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