diff --git a/Avancee.odt b/Avancee.odt index 419e9ca..d0026c1 100644 Binary files a/Avancee.odt and b/Avancee.odt differ diff --git a/Chargement.java b/Chargement.java index b0c24ad..7ec1087 100644 --- a/Chargement.java +++ b/Chargement.java @@ -7,10 +7,12 @@ public class Chargement implements ActionListener { @Override public void actionPerformed(ActionEvent e) { - this.menu.dispose(); + this.menu.setVisible(false); + this.menu.deleteCharger(); SaveManager saveManager = new SaveManager(); 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); } } diff --git a/FrameJeu.java b/FrameJeu.java index 27bfa98..e3a5d24 100644 --- a/FrameJeu.java +++ b/FrameJeu.java @@ -3,8 +3,25 @@ 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{ - public FrameJeu(int lignes, int colonnes, int mines, FrameMenu menu) { + 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(); @@ -16,9 +33,6 @@ public class FrameJeu extends JFrame{ this.setLayout(new GridBagLayout()); 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 Banniere banniere = grille.getBanniere(); diff --git a/FrameMenu.java b/FrameMenu.java index c8dd14b..90a03e7 100644 --- a/FrameMenu.java +++ b/FrameMenu.java @@ -14,6 +14,7 @@ public class FrameMenu extends JFrame{ private JLabel showLines; private JLabel showColumns; private JLabel showMines; + private JButton charger; public FrameMenu() { super(); @@ -87,7 +88,7 @@ public class FrameMenu extends JFrame{ File save = new File("Save.txt"); if(save.exists()){ - JButton charger = new JButton("Charger"); + charger = new JButton("Charger"); charger.addActionListener(new Chargement(this)); charger.setBounds(frameSize.width*4/10, frameSize.height*12/15, frameSize.width/5, frameSize.height/15); this.add(charger); @@ -120,4 +121,9 @@ public class FrameMenu extends JFrame{ settings[2]=this.mines; return settings; } + + // Methode pour supprimer le bouton charger après un chargement + public void deleteCharger(){ + this.remove(this.charger); + } } \ No newline at end of file diff --git a/Grille.java b/Grille.java index c321455..3cf4a44 100644 --- a/Grille.java +++ b/Grille.java @@ -15,10 +15,9 @@ public class Grille extends JPanel{ private boolean enJeu; private FrameJeu fenetre; - // TODO : entourage dans une méthode // 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){ super(); this.colonnes=colonnes; @@ -28,6 +27,7 @@ public class Grille extends JPanel{ 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 ); @@ -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