From e85c7bb0ab51b1c37be370807c7c2f24469eade1 Mon Sep 17 00:00:00 2001 From: Amaury Joly Date: Fri, 4 Dec 2020 18:50:08 +0100 Subject: [PATCH] Stockage de la map dans des fichier + interface lecture --- Map/test.gyro | 10 ++++ src/modele/calculs/IO/LecteurFichier.java | 68 +++++++++++++++++++++++ src/modele/calculs/Jeu.java | 29 ++-------- 3 files changed, 82 insertions(+), 25 deletions(-) create mode 100644 Map/test.gyro create mode 100644 src/modele/calculs/IO/LecteurFichier.java diff --git a/Map/test.gyro b/Map/test.gyro new file mode 100644 index 0000000..1068175 --- /dev/null +++ b/Map/test.gyro @@ -0,0 +1,10 @@ +mmmmmmmmmmmmmmmmmmmm +m c c m +m cmmmmc m +m c c m +mcc m +mcc h m +mcmmm m +mc m +mc i m +mmmmmmmmmmmmmmmmmmmm \ No newline at end of file diff --git a/src/modele/calculs/IO/LecteurFichier.java b/src/modele/calculs/IO/LecteurFichier.java new file mode 100644 index 0000000..e773b86 --- /dev/null +++ b/src/modele/calculs/IO/LecteurFichier.java @@ -0,0 +1,68 @@ +package modele.calculs.IO; + +import modele.calculs.Controle4Directions; +import modele.calculs.Gravite; +import modele.calculs.Items; +import modele.calculs.Jeu; +import modele.donnees.*; + +import java.awt.*; +import java.io.*; +import java.util.HashMap; +import java.util.Scanner; + +public class LecteurFichier { + public static HashMap loadMap(String path, Jeu _jeu) { + int x = 0, y = 0; + HashMap map = new HashMap<>(); + + Items r_i = new Items(); + Gravite r_g = new Gravite(); + modele.calculs.IA r_ia = new modele.calculs.IA(); + Controle4Directions r_c = Controle4Directions.getInstance(); + + try { + File fileMap = new File(path); + FileReader fr = new FileReader(fileMap); + BufferedReader br = new BufferedReader(fr); + int ch; + while ((ch = br.read()) != -1) { + switch((char) ch) { + case 'm': + _jeu.addEntite(new Mur(_jeu), x, y); + break; + case 'h': + Heros h = new Heros(_jeu); + r_c.addEntiteDynamique(h); + r_g.addEntiteDynamique(h); + _jeu.addEntite(h, x, y); + break; + case 'i': + IA ia = new IA(_jeu); + r_ia.addEntiteDynamique(ia); + _jeu.addEntite(ia, x, y); + break; + case 'c': + _jeu.addEntite(new Corde(_jeu), x, y); + break; + case '\n': + y++; + x = -1; + break; + } + x ++; + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + _jeu.getOrdonnanceur().add(r_g); + _jeu.getOrdonnanceur().add(r_c); + _jeu.getOrdonnanceur().add(r_ia); + _jeu.getOrdonnanceur().add(r_i); + + return map; + } +} diff --git a/src/modele/calculs/Jeu.java b/src/modele/calculs/Jeu.java index 4f0a690..db94c67 100644 --- a/src/modele/calculs/Jeu.java +++ b/src/modele/calculs/Jeu.java @@ -8,6 +8,7 @@ package modele.calculs; import modele.calculs.Controle4Directions; import modele.calculs.Direction; import modele.calculs.Gravite; +import modele.calculs.IO.LecteurFichier; import modele.calculs.Ordonnanceur; import modele.donnees.*; @@ -56,33 +57,11 @@ public class Jeu { } private void initialisationDesEntites() { - hector = new Heros(this); - addEntite(hector, 2, 1); - - Gravite g = new Gravite(); - g.addEntiteDynamique(hector); - ordonnanceur.add(g); - - Controle4Directions.getInstance().addEntiteDynamique(hector); - ordonnanceur.add(Controle4Directions.getInstance()); - - // murs extérieurs horizontaux - for (int x = 0; x < 20; x++) { - addEntite(new Mur(this), x, 0); - addEntite(new Mur(this), x, 9); - } - - // murs extérieurs verticaux - for (int y = 1; y < 9; y++) { - addEntite(new Mur(this), 0, y); - addEntite(new Mur(this), 19, y); - } - - addEntite(new Mur(this), 2, 6); - addEntite(new Mur(this), 3, 6); + LecteurFichier.loadMap("Map/test.gyro", this); + System.out.println("Map loaded"); } - private void addEntite(ObjetGyromide e, int x, int y) { + public void addEntite(ObjetGyromide e, int x, int y) { if(e instanceof ElementFond) grilleEntites[x][y][1] = e; else if (e instanceof ElementPhysique)