Stockage de la map dans des fichier + interface lecture

This commit is contained in:
Amaury Joly 2020-12-04 18:50:08 +01:00
parent 3b0f7c912f
commit e85c7bb0ab
3 changed files with 82 additions and 25 deletions

10
Map/test.gyro Normal file
View File

@ -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

View File

@ -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<ObjetGyromide, Point> loadMap(String path, Jeu _jeu) {
int x = 0, y = 0;
HashMap<ObjetGyromide, Point> 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;
}
}

View File

@ -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);
LecteurFichier.loadMap("Map/test.gyro", this);
System.out.println("Map loaded");
}
// 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);
}
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)