avancée fin

This commit is contained in:
Haïssous Kayyissa 2022-05-17 11:11:29 +02:00
parent 528870aeff
commit fb6417c44a
6 changed files with 26 additions and 24 deletions

View File

@ -8,7 +8,6 @@ public class Case extends JPanel {
private boolean visible; private boolean visible;
private boolean minee; private boolean minee;
private boolean reperee; private boolean reperee;
private ListenerCase listener;
private boolean finDePartie; private boolean finDePartie;
// Définition du constructeur // Définition du constructeur
@ -18,11 +17,10 @@ public class Case extends JPanel {
this.visible=false; this.visible=false;
this.reperee=false; this.reperee=false;
this.grille=grille; this.grille=grille;
this.finDePartie=false; //this.finDePartie=false;
// On place un listener sur notre case pour qu'elle réagisse aux clicks du joueur // On place un listener sur notre case pour qu'elle réagisse aux clicks du joueur
this.listener = new ListenerCase(); this.addMouseListener(new ListenerCase());
this.addMouseListener(this.listener);
// Mise en page de la case et couleur par défaut // Mise en page de la case et couleur par défaut
this.setSize(caseSize); this.setSize(caseSize);
@ -39,9 +37,12 @@ public class Case extends JPanel {
// On affiche une mine si la case est minée, sinon le nombre de mines autour d'elle // On affiche une mine si la case est minée, sinon le nombre de mines autour d'elle
if ((this.minee)&&(!this.finDePartie)) { if ((this.minee)&&(!this.finDePartie)) {
this.removeAll();
System.out.println(this.finDePartie);
this.setBackground(new Color(200, 0, 0)); this.setBackground(new Color(200, 0, 0));
this.grille.setAllVisible();
this.finDePartie=true; this.finDePartie=true;
this.grille.setAllVisible();
System.out.println(this.finDePartie);
} }
else if ((this.minee)&&(this.finDePartie)) { else if ((this.minee)&&(this.finDePartie)) {
this.setBackground(new Color(236, 0, 140)); this.setBackground(new Color(236, 0, 140));

View File

@ -8,11 +8,6 @@ public class EtatPartie extends JPanel {
// On défini un style à la bannière // On défini un style à la bannière
this.setBackground( new Color(0, 236, 96)); this.setBackground( new Color(0, 236, 96));
this.setSize(200,100);
// On ajoute le compteur de mines restantes
setMinesLeft(mines);
} }
// Méthode pour afficher le nombre de mines restantes // Méthode pour afficher le nombre de mines restantes

View File

@ -16,17 +16,16 @@ public class FrameJeu{
fenetre.setLayout(new GridBagLayout()); fenetre.setLayout(new GridBagLayout());
GridBagConstraints miseEnPage = new GridBagConstraints(); GridBagConstraints miseEnPage = new GridBagConstraints();
// Création de la bannière
EtatPartie banniere = new EtatPartie(mines);
// Création de la grille de Jeu // Création de la grille de Jeu
Grille grille=new Grille(banniere,lignes,colonnes,mines); Grille grille=new Grille(lignes,colonnes,mines);
// Récupération de la bannière
EtatPartie banniere = grille.getBanniere();
// Mise en place de la bannière // Mise en place de la bannière
Dimension grilleSize= grille.getGrilleSize(); Dimension grilleSize= grille.getGrilleSize();
Dimension banniereSize=new Dimension(grilleSize.width,grilleSize.height/8);
banniere.setSize(banniereSize);
miseEnPage.fill = GridBagConstraints.BOTH; miseEnPage.fill = GridBagConstraints.BOTH;
miseEnPage.gridx = 0; miseEnPage.gridx = 0;
miseEnPage.gridy = 0; miseEnPage.gridy = 0;

View File

@ -6,26 +6,27 @@ public class Grille extends JPanel {
private EtatPartie banniere; private EtatPartie banniere;
private Dimension grilleSize=new Dimension(0,0); private Dimension grilleSize=new Dimension(0,0);
private Case[] plateau; private Case[] plateau;
private int lignes;
private int colonnes; private int colonnes;
private int taille; private int taille;
private int mines; private int mines;
private int minesLeft; private int minesLeft;
// Définition du constructeur qui correspond à une grille de jeu // Définition du constructeur qui correspond à une grille de jeu
public Grille(EtatPartie banniere,int lignes, int colonnes, int mines){ public Grille(int lignes, int colonnes, int mines){
// Découpage de l'espace en fonction des paramètres pour la mise en place de la grille // Découpage de l'espace en fonction des paramètres pour la mise en place de la grille
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.grilleSize = new Dimension(((screenSize.height*3/4)/lignes)*colonnes, screenSize.height*3/4 ); 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); Dimension caseSize = new Dimension(this.grilleSize.height/lignes,this.grilleSize.height/lignes);
GridLayout damier = new GridLayout(lignes,colonnes); GridLayout damier = new GridLayout(lignes,colonnes);
EtatPartie banniere = new EtatPartie(mines);
banniere.setSize(grilleSize.width,grilleSize.height/8);
this.setLayout(damier); this.setLayout(damier);
this.setSize(grilleSize); this.setSize(grilleSize);
this.lignes=lignes;
this.colonnes=colonnes; this.colonnes=colonnes;
this.taille=lignes*colonnes; this.taille=lignes*colonnes;
this.mines=mines; this.mines=mines;
this.minesLeft=mines;
this.banniere=banniere; this.banniere=banniere;
// On génère le plateau contenant les cases // On génère le plateau contenant les cases
GenererPlateau(caseSize); GenererPlateau(caseSize);
@ -131,6 +132,7 @@ public class Grille extends JPanel {
// On place les cases à leur état actuel dans la grille // On place les cases à leur état actuel dans la grille
AfficherPlateau(); AfficherPlateau();
this.banniere.setMinesLeft(this.minesLeft);
} }
// Méthode pour Génerer le plateau // Méthode pour Génerer le plateau
@ -247,4 +249,9 @@ public class Grille extends JPanel {
} }
} }
} }
// Méthode qui renvoie la banniere d'état de la partie
public EtatPartie getBanniere(){
return this.banniere;
}
} }

View File

@ -13,9 +13,9 @@ public class MineLeft extends JComponent {
protected void paintComponent(Graphics pinceau) { protected void paintComponent(Graphics pinceau) {
this.setSize(banniereSize); this.setSize(banniereSize);
Graphics chiffre = pinceau.create(); Graphics chiffre = pinceau.create();
Font font = new Font("Arial", Font.BOLD, banniereSize.width*1/10); Font font = new Font("Arial", Font.BOLD, banniereSize.width/50);
chiffre.setFont(font); chiffre.setFont(font);
chiffre.setColor(new Color(0, 22, 236)); chiffre.setColor(new Color(0, 22, 236));
chiffre.drawString(Integer.toString(this.minesLeft),banniereSize.width*1/5,banniereSize.height*2/3); chiffre.drawString("Nombre de mines restantes : "+Integer.toString(this.minesLeft),banniereSize.width/100,banniereSize.height*2/3);
} }
} }

View File

@ -1,6 +1,6 @@
public class Test { public class Test {
public static void main(String[] args) { public static void main(String[] args) {
new FrameJeu(20,25,50); new FrameJeu(20,25,5);
} }
} }