SAE21_2021/FrameJeu.java

66 lines
2.0 KiB
Java

import javax.swing.*;
import java.awt.*;
// Cette classe à pour but d'afficher un menu et de réagir aux directives de l'utilisateur (lancer le jeu, le quitter...)
public class FrameJeu extends JFrame{
private Grille grille;
public FrameJeu(int lignes, int colonnes, int mines, FrameMenu menu) {
super();
// Création d'une grille pour une nouvelle partie
this.grille=new Grille(lignes,colonnes,mines,this, menu);
MiseEnPage();
}
// Génération d'une grille à partir de la sauvegarde
public FrameJeu (int lignes, int colonnes, SaveManager.SaveData donnees, int mines, FrameMenu menu){
super();
this.grille=new Grille(lignes,colonnes,donnees,mines,this, menu);
MiseEnPage();
}
public void MiseEnPage(){
// On récupère les dimensions de l'écran pour adapter la taille par défaut de notre fenêtre
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
// On crée ensuite notre fenêtre
this.setTitle("Démineur - En Jeu");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Mise en page
this.setLayout(new GridBagLayout());
GridBagConstraints miseEnPage = new GridBagConstraints();
// Récupération de la bannière
Banniere banniere = grille.getBanniere();
this.addWindowListener(new SaveAndCloseListener(grille));
// Mise en place de la bannière
miseEnPage.fill = GridBagConstraints.BOTH;
miseEnPage.gridx = 0;
miseEnPage.gridy = 0;
miseEnPage.weightx =1;
miseEnPage.weighty = 0.15;
this.add(banniere, miseEnPage);
// Mise en place de la grille
miseEnPage.gridx = 0;
miseEnPage.gridy = 1;
miseEnPage.weightx =1;
miseEnPage.weighty = 0.85;
miseEnPage.fill = GridBagConstraints.BOTH;
this.add(grille, miseEnPage);
// Mise en place de la fenêtre et affichage
this.pack();
Dimension grilleSize= grille.getGrilleSize();
this.setSize(grilleSize.width,grilleSize.height*9/8);
Dimension fenetreSize=this.getSize();
this.setLocation(screenSize.width/2-(fenetreSize.width/2), screenSize.height/2-(fenetreSize.height/2));
this.setVisible(true);
}
}