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
|
@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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
130
Grille.java
130
Grille.java
@ -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++){
|
||||||
|
4
Save.txt
4
Save.txt
@ -1,2 +1,2 @@
|
|||||||
30x9
|
25x20x50
|
||||||
100000000001000000010000000000000000000100010000110000000000010000100000000000000000000000001000000010000000001100100000011011100100100000001010000000010000000100000000000000010101100100011000100101000010001011100000000000000001000100000000001100101000100000001000110000
|
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user