bon début chargement
This commit is contained in:
parent
32d6ad2eb3
commit
81b6d2f709
BIN
Avancee.odt
BIN
Avancee.odt
Binary file not shown.
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
130
Grille.java
130
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<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
|
||||
for (int i=0;i<taille;i++){
|
||||
int entourage = 0;
|
||||
@ -138,26 +237,6 @@ public class Grille extends JPanel{
|
||||
}
|
||||
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
|
||||
@ -208,12 +287,17 @@ public class Grille extends JPanel{
|
||||
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(){
|
||||
Dimension grilleSize= new Dimension(this.colonnes, this.lignes);
|
||||
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
|
||||
public void setEntourageVisible(Case panel){
|
||||
for(int i=0; i<this.taille;i++){
|
||||
|
4
Save.txt
4
Save.txt
@ -1,2 +1,2 @@
|
||||
30x9
|
||||
100000000001000000010000000000000000000100010000110000000000010000100000000000000000000000001000000010000000001100100000011011100100100000001010000000010000000100000000000000010101100100011000100101000010001011100000000000000001000100000000001100101000100000001000110000
|
||||
25x20x50
|
||||
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
|
@ -6,7 +6,7 @@ public class SaveManager {
|
||||
public void save(Grille grille, String nomFichier) {
|
||||
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 {
|
||||
BufferedWriter fichier = new BufferedWriter(new FileWriter(nomFichier));
|
||||
Case[] toSave = grille.getPlateau();
|
||||
@ -26,17 +26,19 @@ public class SaveManager {
|
||||
public SaveData load(String nomFichier) {
|
||||
String toReturn="";
|
||||
String ligne;
|
||||
int mines=0;
|
||||
Dimension dimension=new Dimension(0,0);
|
||||
SaveData toRet=new SaveData(null, null);
|
||||
SaveData toRet=new SaveData(null, null, 0);
|
||||
|
||||
try {
|
||||
BufferedReader fichier = new BufferedReader(new FileReader(nomFichier));
|
||||
|
||||
ligne=fichier.readLine();
|
||||
String[] taille = ligne.split("x");
|
||||
String[] infos = ligne.split("x");
|
||||
|
||||
int largeur = Integer.parseInt(taille[0]);
|
||||
int hauteur = Integer.parseInt(taille[1]);
|
||||
int largeur = Integer.parseInt(infos[0]);
|
||||
int hauteur = Integer.parseInt(infos[1]);
|
||||
mines = Integer.parseInt(infos[2]);
|
||||
|
||||
dimension = new Dimension(largeur, hauteur);
|
||||
|
||||
@ -48,26 +50,29 @@ public class SaveManager {
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
toRet.cases=toReturn;
|
||||
toRet.taille=dimension;
|
||||
toRet.mines=mines;
|
||||
|
||||
File save = new File(nomFichier);
|
||||
save.delete();
|
||||
|
||||
toRet.cases=toReturn;
|
||||
toRet.taille=dimension;
|
||||
return toRet;
|
||||
}
|
||||
|
||||
public class SaveData{
|
||||
public Dimension taille;
|
||||
public String cases;
|
||||
public int mines;
|
||||
|
||||
public SaveData(Dimension taille, String cases) {
|
||||
public SaveData(Dimension taille, String cases, int mines) {
|
||||
this.taille = taille;
|
||||
this.cases = cases;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user