SAE21_2021/FrameJeu.java

92 lines
2.7 KiB
Java
Raw Permalink Normal View History

2022-04-26 12:15:13 +02:00
import javax.swing.*;
import java.awt.*;
2022-05-25 10:42:04 +02:00
/**
* La classe <code>FrameJeu</code> génère une grille de jeu
*
* @version 1.1
* @author Kayyissa Haïssous
*/
2022-05-21 17:30:12 +02:00
public class FrameJeu extends JFrame{
2022-05-25 10:42:04 +02:00
/**
* grille de jeu
*/
2022-05-25 08:47:55 +02:00
private Grille grille;
2022-05-25 10:42:04 +02:00
/**
* Constructeur qui sert à géréner une nouvelle grille
* @param lignes le nombre de lignes
* @param colonnes le nombre de colonnes
* @param mines le nombre de mines
* @param menu la fenêtre du menu rattaché à la partie
*/
2022-05-23 19:32:09 +02:00
public FrameJeu(int lignes, int colonnes, int mines, FrameMenu menu) {
2022-05-25 08:47:55 +02:00
super();
// Création d'une grille pour une nouvelle partie
this.grille=new Grille(lignes,colonnes,mines,this, menu);
MiseEnPage();
}
2022-04-26 12:15:13 +02:00
2022-05-25 10:42:04 +02:00
/**
* Constructeur qui sert à charger la grille d'une ancienne partie
* @param lignes le nombre de lignes
* @param colonnes le nombre de colonnes
* @param donnees la sauvegarde
* @param mines le nombre de mines
* @param menu la fenêtre du menu rattaché à la partie
*/
2022-05-25 08:47:55 +02:00
public FrameJeu (int lignes, int colonnes, SaveManager.SaveData donnees, int mines, FrameMenu menu){
super();
2022-05-25 10:42:04 +02:00
// Génération d'une grille à partir de la sauvegarde
2022-05-25 08:47:55 +02:00
this.grille=new Grille(lignes,colonnes,donnees,mines,this, menu);
MiseEnPage();
}
2022-05-25 10:42:04 +02:00
/**
* Méthode qui sert à créer la fenêtre avec ses élements
*/
2022-05-25 08:47:55 +02:00
public void MiseEnPage(){
2022-04-26 12:15:13 +02:00
// 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();
2022-05-05 22:29:04 +02:00
// On crée ensuite notre fenêtre
2022-05-21 17:30:12 +02:00
this.setTitle("Démineur - En Jeu");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
2022-04-27 17:25:07 +02:00
2022-04-28 13:17:30 +02:00
// Mise en page
2022-05-21 17:30:12 +02:00
this.setLayout(new GridBagLayout());
2022-04-28 13:05:26 +02:00
GridBagConstraints miseEnPage = new GridBagConstraints();
2022-05-17 11:11:29 +02:00
// Récupération de la bannière
2022-05-21 17:53:19 +02:00
Banniere banniere = grille.getBanniere();
2022-05-17 11:11:29 +02:00
2022-05-24 22:57:12 +02:00
this.addWindowListener(new SaveAndCloseListener(grille));
2022-04-27 17:25:07 +02:00
2022-04-28 13:17:30 +02:00
// Mise en place de la bannière
2022-04-28 13:16:45 +02:00
miseEnPage.fill = GridBagConstraints.BOTH;
2022-04-28 13:05:26 +02:00
miseEnPage.gridx = 0;
miseEnPage.gridy = 0;
2022-04-28 13:16:45 +02:00
miseEnPage.weightx =1;
2022-04-28 16:50:06 +02:00
miseEnPage.weighty = 0.15;
2022-05-21 17:30:12 +02:00
this.add(banniere, miseEnPage);
2022-04-28 13:05:26 +02:00
// Mise en place de la grille
miseEnPage.gridx = 0;
miseEnPage.gridy = 1;
2022-04-28 13:16:45 +02:00
miseEnPage.weightx =1;
2022-04-28 16:50:06 +02:00
miseEnPage.weighty = 0.85;
2022-04-28 13:16:45 +02:00
miseEnPage.fill = GridBagConstraints.BOTH;
2022-05-21 17:30:12 +02:00
this.add(grille, miseEnPage);
2022-04-28 13:05:26 +02:00
2022-04-28 13:17:30 +02:00
// Mise en place de la fenêtre et affichage
2022-05-21 17:30:12 +02:00
this.pack();
2022-05-19 08:12:15 +02:00
Dimension grilleSize= grille.getGrilleSize();
2022-05-21 17:30:12 +02:00
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);
2022-04-26 12:15:13 +02:00
}
}