bon début chargement

This commit is contained in:
Haïssous Kayyissa 2022-05-25 08:47:55 +02:00
parent 32d6ad2eb3
commit 81b6d2f709
7 changed files with 152 additions and 41 deletions

Binary file not shown.

View File

@ -7,10 +7,12 @@ public class Chargement implements ActionListener {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
this.menu.dispose(); this.menu.setVisible(false);
this.menu.deleteCharger();
SaveManager saveManager = new SaveManager(); SaveManager saveManager = new SaveManager();
SaveManager.SaveData donnees = saveManager.load("Save.txt"); SaveManager.SaveData donnees = saveManager.load("Save.txt");
System.out.println(donnees);
new FrameJeu((int) donnees.taille.getHeight(),(int) donnees.taille.getWidth(), donnees,(int) donnees.mines, this.menu);
} }
} }

View File

@ -3,7 +3,24 @@ 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...) // 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{ public class FrameJeu extends JFrame{
private Grille grille;
public FrameJeu(int lignes, int colonnes, int mines, FrameMenu menu) { 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 // 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(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
@ -16,9 +33,6 @@ public class FrameJeu extends JFrame{
this.setLayout(new GridBagLayout()); this.setLayout(new GridBagLayout());
GridBagConstraints miseEnPage = new GridBagConstraints(); GridBagConstraints miseEnPage = new GridBagConstraints();
// Création de la grille de Jeu
Grille grille=new Grille(lignes,colonnes,mines,this, menu);
// Récupération de la bannière // Récupération de la bannière
Banniere banniere = grille.getBanniere(); Banniere banniere = grille.getBanniere();

View File

@ -14,6 +14,7 @@ public class FrameMenu extends JFrame{
private JLabel showLines; private JLabel showLines;
private JLabel showColumns; private JLabel showColumns;
private JLabel showMines; private JLabel showMines;
private JButton charger;
public FrameMenu() { public FrameMenu() {
super(); super();
@ -87,7 +88,7 @@ public class FrameMenu extends JFrame{
File save = new File("Save.txt"); File save = new File("Save.txt");
if(save.exists()){ if(save.exists()){
JButton charger = new JButton("Charger"); charger = new JButton("Charger");
charger.addActionListener(new Chargement(this)); charger.addActionListener(new Chargement(this));
charger.setBounds(frameSize.width*4/10, frameSize.height*12/15, frameSize.width/5, frameSize.height/15); charger.setBounds(frameSize.width*4/10, frameSize.height*12/15, frameSize.width/5, frameSize.height/15);
this.add(charger); this.add(charger);
@ -120,4 +121,9 @@ public class FrameMenu extends JFrame{
settings[2]=this.mines; settings[2]=this.mines;
return settings; return settings;
} }
// Methode pour supprimer le bouton charger après un chargement
public void deleteCharger(){
this.remove(this.charger);
}
} }

View File

@ -15,10 +15,9 @@ public class Grille extends JPanel{
private boolean enJeu; private boolean enJeu;
private FrameJeu fenetre; private FrameJeu fenetre;
// TODO : entourage dans une méthode
// TODO : Recréer un tableau avec les cases minees // TODO : Recréer un tableau avec les cases minees
// Définition du constructeur qui correspond à une grille de jeu // Définition du constructeur qui correspond à une nouvelle grille de jeu
public Grille(int lignes, int colonnes, int mines, FrameJeu fenetre, FrameMenu menu){ public Grille(int lignes, int colonnes, int mines, FrameJeu fenetre, FrameMenu menu){
super(); super();
this.colonnes=colonnes; this.colonnes=colonnes;
@ -28,6 +27,7 @@ public class Grille extends JPanel{
this.minesLeft=mines; this.minesLeft=mines;
this.enJeu=true; this.enJeu=true;
this.fenetre=fenetre; this.fenetre=fenetre;
// 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 );
@ -68,6 +68,105 @@ public class Grille extends JPanel{
} }
} }
// On défini l'entourage de chaque case
SetEntourage(caseMine);
// On place les cases à leur état actuel dans la grille
AfficherPlateau();
// On
this.banniere.setMinesLeft(this.minesLeft);
}
public Grille (int lignes,int colonnes,SaveManager.SaveData donnees,int mines,FrameJeu fenetre, FrameMenu menu){
super();
this.colonnes=colonnes;
this.lignes=lignes;
this.taille=lignes*colonnes;
this.minesLeft=mines;
this.mines=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 initialise un plateau de cases
GenererPlateau(caseSize);
// On prépare un tableau pour y placer les cases minées
int[] caseMine = new int[mines];
// On lit maintenant les données pour fixer certains de leurs attributs
int j=0;
for (int i=0;i<=taille-1;i++){
System.out.println(donnees.cases.substring(i,i+1));
if (Integer.parseInt(donnees.cases.substring(i,i+1))==1){
plateau[i].setMine();
caseMine[j]=i;
j++;
} else if (Integer.parseInt(donnees.cases.substring(i,i+1))==2){
plateau[i].setReperee(true);
} else if (Integer.parseInt(donnees.cases.substring(i,i+1))==3){
plateau[i].setMine();
plateau[i].setReperee(true);
} else if (Integer.parseInt(donnees.cases.substring(i,i+1))==4){
plateau[i].setVisible();
}
}
// On détermine l'entourage de chaque case
SetEntourage(caseMine);
// On affiche la grille
AfficherPlateau();
}
// Méthode pour Génerer le plateau
protected void GenererPlateau(Dimension caseSize){
this.plateau= new Case[this.taille];
for (int i=0;i<this.taille;i++){
this.plateau[i]= new Case(this,caseSize);
}
}
// Méthode pour Afficher le plateau
protected void AfficherPlateau(){
for (int i=0;i<this.taille;i++){
this.add(this.plateau[i]);
}
}
// Méthode pour établir le nombre de mines autour de chaque case
protected void SetEntourage(int[] caseMine){
// On cherche à connaître le nombre de mines autour de chaque case // On cherche à connaître le nombre de mines autour de chaque case
for (int i=0;i<taille;i++){ for (int i=0;i<taille;i++){
int entourage = 0; int entourage = 0;
@ -138,26 +237,6 @@ public class Grille extends JPanel{
} }
plateau[i].setEntourage(entourage); plateau[i].setEntourage(entourage);
} }
// On place les cases à leur état actuel dans la grille
AfficherPlateau();
this.banniere.setMinesLeft(this.minesLeft);
}
// Méthode pour Génerer le plateau
protected void GenererPlateau(Dimension caseSize){
this.plateau= new Case[this.taille];
for (int i=0;i<this.taille;i++){
this.plateau[i]= new Case(this,caseSize);
}
}
// Méthode pour Afficher le plateau
protected void AfficherPlateau(){
for (int i=0;i<this.taille;i++){
this.add(this.plateau[i]);
}
} }
// Méthode pour obtenir la taille de la grille de jeu // Méthode pour obtenir la taille de la grille de jeu
@ -208,12 +287,17 @@ public class Grille extends JPanel{
return Arrays.copyOf(this.plateau,this.taille); return Arrays.copyOf(this.plateau,this.taille);
} }
// Méthode pour récupérer le nombre de lignes // Méthode pour récupérer la taille de la grille
public Dimension getDimensionGrille(){ public Dimension getDimensionGrille(){
Dimension grilleSize= new Dimension(this.colonnes, this.lignes); Dimension grilleSize= new Dimension(this.colonnes, this.lignes);
return grilleSize; return grilleSize;
} }
// Méthode pour savoir combien de mines sont dans la grille
public int getMines(){
return this.mines;
}
// Méthode pour rendre visibles les cases autour d'un 0 // Méthode pour rendre visibles les cases autour d'un 0
public void setEntourageVisible(Case panel){ public void setEntourageVisible(Case panel){
for(int i=0; i<this.taille;i++){ for(int i=0; i<this.taille;i++){

View File

@ -1,2 +1,2 @@
30x9 25x20x50
100000000001000000010000000000000000000100010000110000000000010000100000000000000000000000001000000010000000001100100000011011100100100000001010000000010000000100000000000000010101100100011000100101000010001011100000000000000001000100000000001100101000100000001000110000 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444

View File

@ -6,7 +6,7 @@ public class SaveManager {
public void save(Grille grille, String nomFichier) { public void save(Grille grille, String nomFichier) {
Dimension taille = grille.getDimensionGrille(); Dimension taille = grille.getDimensionGrille();
String metaData= (int) taille.getWidth()+"x"+ (int) taille.getHeight()+"\n"; String metaData= (int) taille.getWidth()+"x"+ (int) taille.getHeight()+"x"+ grille.getMines()+"\n";
try { try {
BufferedWriter fichier = new BufferedWriter(new FileWriter(nomFichier)); BufferedWriter fichier = new BufferedWriter(new FileWriter(nomFichier));
Case[] toSave = grille.getPlateau(); Case[] toSave = grille.getPlateau();
@ -26,17 +26,19 @@ public class SaveManager {
public SaveData load(String nomFichier) { public SaveData load(String nomFichier) {
String toReturn=""; String toReturn="";
String ligne; String ligne;
int mines=0;
Dimension dimension=new Dimension(0,0); Dimension dimension=new Dimension(0,0);
SaveData toRet=new SaveData(null, null); SaveData toRet=new SaveData(null, null, 0);
try { try {
BufferedReader fichier = new BufferedReader(new FileReader(nomFichier)); BufferedReader fichier = new BufferedReader(new FileReader(nomFichier));
ligne=fichier.readLine(); ligne=fichier.readLine();
String[] taille = ligne.split("x"); String[] infos = ligne.split("x");
int largeur = Integer.parseInt(taille[0]); int largeur = Integer.parseInt(infos[0]);
int hauteur = Integer.parseInt(taille[1]); int hauteur = Integer.parseInt(infos[1]);
mines = Integer.parseInt(infos[2]);
dimension = new Dimension(largeur, hauteur); dimension = new Dimension(largeur, hauteur);
@ -49,25 +51,28 @@ public class SaveManager {
e.printStackTrace(); e.printStackTrace();
} }
toRet.cases=toReturn;
toRet.taille=dimension;
toRet.mines=mines;
File save = new File(nomFichier); File save = new File(nomFichier);
save.delete(); save.delete();
toRet.cases=toReturn;
toRet.taille=dimension;
return toRet; return toRet;
} }
public class SaveData{ public class SaveData{
public Dimension taille; public Dimension taille;
public String cases; public String cases;
public int mines;
public SaveData(Dimension taille, String cases) { public SaveData(Dimension taille, String cases, int mines) {
this.taille = taille; this.taille = taille;
this.cases = cases; this.cases = cases;
} }
public String toString() { public String toString() {
return (int) taille.getWidth()+"x"+(int) taille.getHeight()+"\n"+cases; return (int) taille.getWidth()+"x"+(int) taille.getHeight()+"x"+mines+"\n"+cases;
} }
} }
} }