Skip to content

Commit

Permalink
Posible solucion usando casillas
Browse files Browse the repository at this point in the history
  • Loading branch information
MatiasTK committed Nov 21, 2023
1 parent 8f784df commit 7bbcd61
Show file tree
Hide file tree
Showing 9 changed files with 106 additions and 236 deletions.
53 changes: 42 additions & 11 deletions src/main/java/edu/fiuba/algo3/modelo/Casilla.java
Original file line number Diff line number Diff line change
@@ -1,24 +1,55 @@
package edu.fiuba.algo3.modelo;

import edu.fiuba.algo3.modelo.camino.CaminoTipo;
import edu.fiuba.algo3.modelo.interactuables.InteractuableCasilla;

import java.util.Objects;

public class Casilla {
private Casilla siguiente;
private Casilla anterior;
private InteractuableCasilla interactuable;

private final Efecto efecto;
private final CaminoTipo tipo;
public Casilla(Casilla siguiente, InteractuableCasilla interactuable) {
this.siguiente = siguiente;
this.interactuable = interactuable;
this.anterior = null;
siguiente.setAnterior(this);
}

public Casilla(InteractuableCasilla interactuable) {
this.siguiente = null;
this.interactuable = interactuable;
this.anterior = null;
}

public Casilla obtenerSiguiente() {
// Exeception si no hay siguiente
return this.siguiente;
}

public Casilla obtenerAnterior(){
// Exeception si no hay anterior
return this.anterior;
}

public void interactuar(Gladiador gladiador) {
this.interactuable.interactuar(gladiador);
}

public Casilla(Efecto e, CaminoTipo t) {
this.efecto = e;
this.tipo = t;
public void setAnterior(Casilla anterior) {
this.anterior = anterior;
}

public void aplicarEfecto(Gladiador g) {
this.efecto.aplicar(g);
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Casilla casilla = (Casilla) o;
return Objects.equals(siguiente, casilla.siguiente) && Objects.equals(anterior, casilla.anterior) && Objects.equals(interactuable, casilla.interactuable);
}

//para la interfaz grafica
public void pintar() {
this.tipo.pintar();
@Override
public int hashCode() {
return Objects.hash(siguiente, anterior, interactuable);
}
}
17 changes: 13 additions & 4 deletions src/main/java/edu/fiuba/algo3/modelo/Gladiador.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@ public class Gladiador {
private Equipo equipo;
private int turnosJugados = 0;

public Gladiador() {
public Gladiador(Casilla casillaInicial) {
this.energia = new Energia();
this.setNivel(new Novato());
this.equipo = new SinEquipo();
this.casilla = casillaInicial;
}

//esto usa el patron state, ver si se puede mejorar, sacar el SET
Expand Down Expand Up @@ -56,6 +57,10 @@ public boolean tenesPuntosDeEnegia(int puntos) {
return this.energia.tenes(puntos);
}

public Casilla obtenerCasilla(){
return this.casilla;
}

//mejorar
public Nivel getNivel() {
return this.nivel;
Expand All @@ -65,10 +70,14 @@ public String obtenerNombre() {
return "nombre";
}

public void lesion() {
public void mover(int cantidad) {
if (cantidad == 0) return;

this.casilla = this.casilla.obtenerSiguiente();
this.casilla.interactuar(this);
this.mover(cantidad - 1);
}

public void efecto() {
this.casilla.aplicarEfecto(this);
public void lesion() {
}
}
25 changes: 0 additions & 25 deletions src/main/java/edu/fiuba/algo3/modelo/Tablero.java
Original file line number Diff line number Diff line change
@@ -1,30 +1,5 @@
package edu.fiuba.algo3.modelo;

import edu.fiuba.algo3.modelo.efectos.Fiera;

import java.util.ArrayList;
import java.util.HashMap;

public class Tablero {
private final HashMap<String, Posicion> casillerosGladiadores;
private final HashMap<Posicion, Fiera> casilleros; // Deberia ser un generico de Casillero.

public Tablero(ArrayList<Gladiador> gladiadores, ArrayList<Fiera> fieras){
casillerosGladiadores = new HashMap<String, Posicion>();
casilleros = new HashMap<Posicion, Fiera>();
for(Gladiador gladiador: gladiadores){
casillerosGladiadores.put(gladiador.obtenerNombre(), new Posicion(0));
}
}

public void avanzar(Gladiador gladiador, Dado dado){
if(gladiador.tenesPuntosDeEnegia(0)) return;
int cantidadDeCasilleros = dado.tirar();
Posicion posicionActual = casillerosGladiadores.get(gladiador.obtenerNombre());
Fiera fiera = casilleros.get(posicionActual);
posicionActual.avanzar(cantidadDeCasilleros);
}
public Posicion obtenerPosicionGladiador(Gladiador gladiador){
return casillerosGladiadores.get(gladiador.obtenerNombre());
}
}
4 changes: 2 additions & 2 deletions src/main/java/edu/fiuba/algo3/modelo/TableroB.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

public class TableroB {

private final ArrayList<ArrayList<Casilla>> casillas;
/* private final ArrayList<ArrayList<Casilla>> casillas;
private final Map<Integer, Casilla> camino;
private final Map<Gladiador, Integer> posicionGladiadiores;
Expand Down Expand Up @@ -57,5 +57,5 @@ private void crearTablero(List<JsonObject> mapa) {
y = dato.get("y").getAsInt();
}
}
}
}*/
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package edu.fiuba.algo3.modelo.interactuables;

import edu.fiuba.algo3.modelo.Gladiador;

public class FieraInteractuable implements InteractuableCasilla{
@Override
public void interactuar(Gladiador gladiador) {
gladiador.esAtacado();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package edu.fiuba.algo3.modelo.interactuables;

import edu.fiuba.algo3.modelo.Gladiador;

public interface InteractuableCasilla {
void interactuar (Gladiador gladiador);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package edu.fiuba.algo3.modelo.interactuables;

import edu.fiuba.algo3.modelo.Gladiador;

public class SinInteraccion implements InteractuableCasilla{
@Override
public void interactuar(Gladiador gladiador) {

}
}
2 changes: 2 additions & 0 deletions src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@
requires javafx.controls;
requires com.google.gson;
exports edu.fiuba.algo3;
exports edu.fiuba.algo3.modelo;
exports edu.fiuba.algo3.modelo.interactuables;
}
Loading

0 comments on commit 7bbcd61

Please sign in to comment.