diff --git a/mapa.json b/mapa.json new file mode 100644 index 0000000..47ad9eb --- /dev/null +++ b/mapa.json @@ -0,0 +1,31 @@ +[ + {"x": 0, "y": 0, "esCamino": true, "ordenRecorrido": 1, "efecto": "Comida"}, + {"x": 1, "y": 0, "esCamino": true, "ordenRecorrido": 2, "efecto": null}, + {"x": 2, "y": 0, "esCamino": false, "ordenRecorrido": null, "efecto": null}, + {"x": 3, "y": 0, "esCamino": true, "ordenRecorrido": 3, "efecto": "Comida"}, + {"x": 4, "y": 0, "esCamino": true, "ordenRecorrido": 4, "efecto": null}, + + {"x": 0, "y": 1, "esCamino": true, "ordenRecorrido": 5, "efecto": "Bacanal"}, + {"x": 1, "y": 1, "esCamino": false, "ordenRecorrido": null, "efecto": null}, + {"x": 2, "y": 1, "esCamino": true, "ordenRecorrido": 6, "efecto": null}, + {"x": 3, "y": 1, "esCamino": false, "ordenRecorrido": null, "efecto": null}, + {"x": 4, "y": 1, "esCamino": true, "ordenRecorrido": 7, "efecto": "Fiera"}, + + {"x": 0, "y": 2, "esCamino": false, "ordenRecorrido": null, "efecto": null}, + {"x": 1, "y": 2, "esCamino": true, "ordenRecorrido": 8, "efecto": null}, + {"x": 2, "y": 2, "esCamino": true, "ordenRecorrido": 9, "efecto": "Equipamiento"}, + {"x": 3, "y": 2, "esCamino": true, "ordenRecorrido": 10, "efecto": null}, + {"x": 4, "y": 2, "esCamino": false, "ordenRecorrido": null, "efecto": null}, + + {"x": 0, "y": 3, "esCamino": true, "ordenRecorrido": 11, "efecto": "Equipamiento"}, + {"x": 1, "y": 3, "esCamino": false, "ordenRecorrido": null, "efecto": null}, + {"x": 2, "y": 3, "esCamino": true, "ordenRecorrido": 12, "efecto": null}, + {"x": 3, "y": 3, "esCamino": false, "ordenRecorrido": null, "efecto": null}, + {"x": 4, "y": 3, "esCamino": true, "ordenRecorrido": 13, "efecto": null}, + + {"x": 0, "y": 4, "esCamino": true, "ordenRecorrido": 14, "efecto": null}, + {"x": 1, "y": 4, "esCamino": true, "ordenRecorrido": 15, "efecto": null}, + {"x": 2, "y": 4, "esCamino": false, "ordenRecorrido": null, "efecto": null}, + {"x": 3, "y": 4, "esCamino": true, "ordenRecorrido": 16, "efecto": null}, + {"x": 4, "y": 4, "esCamino": true, "ordenRecorrido": 17, "efecto": null} +] diff --git a/src/main/java/edu/fiuba/algo3/modelo/TableroB.java b/src/main/java/edu/fiuba/algo3/modelo/TableroB.java new file mode 100644 index 0000000..59d1a66 --- /dev/null +++ b/src/main/java/edu/fiuba/algo3/modelo/TableroB.java @@ -0,0 +1,61 @@ +package edu.fiuba.algo3.modelo; + +import java.util.*; + +import com.google.gson.JsonObject; +import edu.fiuba.algo3.modelo.camino.CaminoFactory; +import edu.fiuba.algo3.modelo.camino.CaminoTipo; + +public class TableroB { + + private final ArrayList> casillas; + private final Map camino; + private final Map posicionGladiadiores; + + public TableroB(List gladiadores, List mapa) { + this.casillas = new ArrayList<>(); + this.camino = new HashMap<>(); + this.posicionGladiadiores = new HashMap<>(); + crearTablero(mapa); + asignarPosicionesDe(gladiadores); + } + + public void mover(Gladiador g, int a) { + int nuevaUbicacion = posicionGladiadiores.get(g) + a; + posicionGladiadiores.put(g, nuevaUbicacion) ; + camino.get(nuevaUbicacion).aplicarEfecto(g); + } + + public boolean estaEl(Gladiador g, int en) { + return this.posicionGladiadiores.get(g) == en; + } + + private void asignarPosicionesDe(List g) { + for (Gladiador gladiador: g) { + posicionGladiadiores.put(gladiador, 0); + } + } + + private void crearTablero(List mapa) { + int y = 0; + ArrayList fila = new ArrayList<>(); + for (JsonObject dato: mapa) { + Efecto efecto = EfectoFactory.crearEfecto(dato.get("efecto").toString().replaceAll("^\"|\"$", "")); + boolean esCamino = dato.get("esCamino").getAsBoolean();; + CaminoTipo tipo = CaminoFactory.crearTipo(esCamino); + Casilla casilla = new Casilla(efecto, tipo); + if (esCamino) + camino.put(dato.get("ordenRecorrido").getAsInt(), casilla); + + if (dato.get("y").getAsInt() == y) { + fila.add(casilla); + } + else { + casillas.add(fila); + fila = new ArrayList<>(); + fila.add(casilla); + y = dato.get("y").getAsInt(); + } + } + } +} diff --git a/src/main/java/edu/fiuba/algo3/modelo/camino/Camino.java b/src/main/java/edu/fiuba/algo3/modelo/camino/Camino.java new file mode 100644 index 0000000..565c564 --- /dev/null +++ b/src/main/java/edu/fiuba/algo3/modelo/camino/Camino.java @@ -0,0 +1,10 @@ +package edu.fiuba.algo3.modelo.camino; + +import edu.fiuba.algo3.modelo.camino.CaminoTipo; + +public class Camino extends CaminoTipo { + @Override + public void pintar() { + + } +} diff --git a/src/main/java/edu/fiuba/algo3/modelo/camino/CaminoFactory.java b/src/main/java/edu/fiuba/algo3/modelo/camino/CaminoFactory.java new file mode 100644 index 0000000..35bf263 --- /dev/null +++ b/src/main/java/edu/fiuba/algo3/modelo/camino/CaminoFactory.java @@ -0,0 +1,10 @@ +package edu.fiuba.algo3.modelo.camino; + +public class CaminoFactory { + + public static CaminoTipo crearTipo(Boolean esCamino) { + if (esCamino) + return new Camino(); + return new NoEsCamino(); + } +} diff --git a/src/main/java/edu/fiuba/algo3/modelo/camino/CaminoTipo.java b/src/main/java/edu/fiuba/algo3/modelo/camino/CaminoTipo.java new file mode 100644 index 0000000..f0ef187 --- /dev/null +++ b/src/main/java/edu/fiuba/algo3/modelo/camino/CaminoTipo.java @@ -0,0 +1,6 @@ +package edu.fiuba.algo3.modelo.camino; + +public abstract class CaminoTipo { + + public abstract void pintar(); +} diff --git a/src/main/java/edu/fiuba/algo3/modelo/camino/NoEsCamino.java b/src/main/java/edu/fiuba/algo3/modelo/camino/NoEsCamino.java new file mode 100644 index 0000000..28be1f1 --- /dev/null +++ b/src/main/java/edu/fiuba/algo3/modelo/camino/NoEsCamino.java @@ -0,0 +1,8 @@ +package edu.fiuba.algo3.modelo.camino; + +public class NoEsCamino extends CaminoTipo { + @Override + public void pintar() { + + } +} diff --git a/src/main/java/edu/fiuba/algo3/modelo/efectos/Ninguno.java b/src/main/java/edu/fiuba/algo3/modelo/efectos/Ninguno.java new file mode 100644 index 0000000..b55959e --- /dev/null +++ b/src/main/java/edu/fiuba/algo3/modelo/efectos/Ninguno.java @@ -0,0 +1,11 @@ +package edu.fiuba.algo3.modelo.efectos; + +import edu.fiuba.algo3.modelo.Efecto; +import edu.fiuba.algo3.modelo.Gladiador; + +public class Ninguno implements Efecto { + @Override + public void aplicar(Gladiador g) { + + } +}