Skip to content

Commit

Permalink
Arreglo interactuables y añado estados
Browse files Browse the repository at this point in the history
  • Loading branch information
MatiasTK committed Nov 22, 2023
1 parent 7bbcd61 commit 7e0974f
Show file tree
Hide file tree
Showing 21 changed files with 172 additions and 26 deletions.
7 changes: 4 additions & 3 deletions mapa.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
[
{"x": 0, "y": 0, "esCamino": true, "ordenRecorrido": 1, "efecto": "Comida"},
{"x": 1, "y": 0, "esCamino": true, "ordenRecorrido": 2, "efecto": null},
{"numeroCasilla": 0, "efecto": "Comida"},
{"x": 0, "y": 0, "ordenRecorrido": 1, "efecto": "Comida"},
{"x": 1, "y": 0, "esCamino": true, "ordenRecorrido": 3, "efecto": null},
{"x": 2, "y": 0, "esCamino": false, "ordenRecorrido": null, "efecto": null},
{"x": 3, "y": 0, "esCamino": true, "ordenRecorrido": 3, "efecto": "Comida"},
{"x": 3, "y": 0, "esCamino": true, "ordenRecorrido": 2, "efecto": "Comida"},
{"x": 4, "y": 0, "esCamino": true, "ordenRecorrido": 4, "efecto": null},

{"x": 0, "y": 1, "esCamino": true, "ordenRecorrido": 5, "efecto": "Bacanal"},
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/edu/fiuba/algo3/modelo/Casilla.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package edu.fiuba.algo3.modelo;

import edu.fiuba.algo3.modelo.estados.Estado;
import edu.fiuba.algo3.modelo.interactuables.InteractuableCasilla;

import java.util.Objects;
Expand Down Expand Up @@ -32,8 +33,8 @@ public Casilla obtenerAnterior(){
return this.anterior;
}

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

public void setAnterior(Casilla anterior) {
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/edu/fiuba/algo3/modelo/Energia.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,7 @@ public void restarPuntos(int cantidad) {
public boolean tenes(int puntos) {
return this.puntos == puntos;
}
public boolean tenesMasDe(int puntos) {
return this.puntos > puntos;
}
}
33 changes: 22 additions & 11 deletions src/main/java/edu/fiuba/algo3/modelo/Gladiador.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

import edu.fiuba.algo3.modelo.equipamiento.Equipo;
import edu.fiuba.algo3.modelo.equipamiento.SinEquipo;
import edu.fiuba.algo3.modelo.estados.Estado;
import edu.fiuba.algo3.modelo.estados.EstadoLesionado;
import edu.fiuba.algo3.modelo.estados.EstadoSano;
import edu.fiuba.algo3.modelo.estados.EstadoSinEnergia;
import edu.fiuba.algo3.modelo.nivel.Nivel;
import edu.fiuba.algo3.modelo.nivel.Novato;

Expand All @@ -10,6 +14,7 @@ public class Gladiador {
private Energia energia;
private Nivel nivel;
private Casilla casilla;
private Estado estado;

//como no tiene efecto el historial de obtenciones de equipo por parte del jugador, simplemente tiene el ultimo equipo obtenido
private Equipo equipo;
Expand All @@ -28,25 +33,26 @@ public void setNivel(Nivel n) {
this.nivel.setGladiador(this);
}

public void jugar() {
this.turnosJugados += 1;
this.nivel.actualizarPuntos(this.energia, this.turnosJugados);
public void bonoSinEnergia() {
energia.sumarPuntos(5);
}

public void actualizarEquipo() {
this.equipo = this.equipo.actualizar();
}

public void beber(int puntosPerdidos) {
public Estado beber(int puntosPerdidos) {
this.energia.restarPuntos(puntosPerdidos);
return this.energia.tenesMasDe(0) ? new EstadoSano() : new EstadoSinEnergia();
}

public void esAtacado() {
public Estado esAtacado() {
this.equipo.resistirAtaque(this.energia);
return this.energia.tenesMasDe(0) ? new EstadoSano() : new EstadoSinEnergia();
}

public void comer() {
this.energia.sumarPuntos(10);
this.energia.sumarPuntos(10); // Va 15
}

public boolean tenesEsteEquipo(Equipo e) {
Expand All @@ -70,12 +76,17 @@ public String obtenerNombre() {
return "nombre";
}

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

public Estado avanzarCasilla(){
this.casilla = this.casilla.obtenerSiguiente();
this.casilla.interactuar(this);
this.mover(cantidad - 1);
return this.casilla.interactuar(this);
}

public void jugar() {
this.estado = this.estado.jugar(this);
}

public void retroceder(){

}

public void lesion() {
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/edu/fiuba/algo3/modelo/Tablero.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
package edu.fiuba.algo3.modelo;

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

import java.util.ArrayList;

public class Tablero {
private ArrayList<Gladiador> gladiadores;
private Casilla mitadDeMapa;

/*public Tablero(JSON json){
// Arma la casilla con el json
Casilla ultima = new Casilla(new Meta());
Casilla anteultima = new Casilla(ultima, JSON.anteultima);
Casilla primera = new Casilla(anteultima, JSON.primera);
Gladiador primero = new Gladiador(primera);
}*/

public Tablero(){

}
}
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; // [F,N,G,N,F]
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
Expand Up @@ -8,7 +8,6 @@ public abstract class Equipo {

public abstract Equipo actualizar();


public boolean equals(Equipo e) {
return this.getClass() == e.getClass();
}
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/edu/fiuba/algo3/modelo/estados/Estado.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package edu.fiuba.algo3.modelo.estados;

import edu.fiuba.algo3.modelo.Gladiador;

public interface Estado {
Estado jugar(Gladiador gladiador);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package edu.fiuba.algo3.modelo.estados;

import edu.fiuba.algo3.modelo.Gladiador;

public class EstadoLesionado implements Estado {
public Estado jugar(Gladiador gladiador){
return new EstadoSano();
}
}
10 changes: 10 additions & 0 deletions src/main/java/edu/fiuba/algo3/modelo/estados/EstadoSano.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package edu.fiuba.algo3.modelo.estados;

import edu.fiuba.algo3.modelo.Gladiador;

public class EstadoSano implements Estado{

public Estado jugar(Gladiador gladiador){
return gladiador.avanzarCasilla();
}
}
11 changes: 11 additions & 0 deletions src/main/java/edu/fiuba/algo3/modelo/estados/EstadoSinEnergia.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package edu.fiuba.algo3.modelo.estados;

import edu.fiuba.algo3.modelo.Gladiador;

public class EstadoSinEnergia implements Estado {
@Override
public Estado jugar(Gladiador gladiador) {
gladiador.bonoSinEnergia();
return new EstadoSano();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package edu.fiuba.algo3.modelo.interactuables;

import edu.fiuba.algo3.modelo.Dado;
import edu.fiuba.algo3.modelo.Gladiador;
import edu.fiuba.algo3.modelo.estados.Estado;

public class BacanalInteractuable implements InteractuableCasilla{
@Override
public Estado interactuar(Gladiador gladiador) {
Dado dado = new Dado();
return gladiador.beber(dado.tirar());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package edu.fiuba.algo3.modelo.interactuables;

import edu.fiuba.algo3.modelo.Gladiador;
import edu.fiuba.algo3.modelo.estados.Estado;
import edu.fiuba.algo3.modelo.estados.EstadoSano;

public class ComidaInteractuable implements InteractuableCasilla {
@Override
public Estado interactuar(Gladiador gladiador) {
gladiador.comer();
return new EstadoSano();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package edu.fiuba.algo3.modelo.interactuables;

import edu.fiuba.algo3.modelo.Gladiador;
import edu.fiuba.algo3.modelo.estados.Estado;
import edu.fiuba.algo3.modelo.estados.EstadoSano;

public class EquipamientoInteractuable implements InteractuableCasilla{
@Override
public Estado interactuar(Gladiador gladiador) {
gladiador.actualizarEquipo();
return new EstadoSano();
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package edu.fiuba.algo3.modelo.interactuables;

import edu.fiuba.algo3.modelo.Gladiador;
import edu.fiuba.algo3.modelo.estados.Estado;

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

import edu.fiuba.algo3.modelo.Gladiador;
import edu.fiuba.algo3.modelo.estados.Estado;

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

import edu.fiuba.algo3.modelo.Gladiador;
import edu.fiuba.algo3.modelo.estados.Estado;
import edu.fiuba.algo3.modelo.estados.EstadoLesionado;

public class LesionInteractuable implements InteractuableCasilla{
@Override
public Estado interactuar(Gladiador gladiador) {
return new EstadoLesionado();
}
}
15 changes: 15 additions & 0 deletions src/main/java/edu/fiuba/algo3/modelo/interactuables/Meta.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package edu.fiuba.algo3.modelo.interactuables;

import edu.fiuba.algo3.modelo.Gladiador;
import edu.fiuba.algo3.modelo.estados.Estado;
import edu.fiuba.algo3.modelo.estados.EstadoSano;

public class Meta implements InteractuableCasilla{
@Override
public Estado interactuar(Gladiador gladiador) {
// Chequea si el gladiador tiene llave
// Sino lo tiene que hacer retroceder la mitad de las casillas
return new EstadoSano();
}
}

Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package edu.fiuba.algo3.modelo.interactuables;

import edu.fiuba.algo3.modelo.Gladiador;
import edu.fiuba.algo3.modelo.estados.Estado;
import edu.fiuba.algo3.modelo.estados.EstadoSano;

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

public Estado interactuar(Gladiador gladiador) {
return new EstadoSano();
}
}
1 change: 1 addition & 0 deletions src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
exports edu.fiuba.algo3;
exports edu.fiuba.algo3.modelo;
exports edu.fiuba.algo3.modelo.interactuables;
exports edu.fiuba.algo3.modelo.estados;
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,13 @@ public void test02JugadorSaleDeLaCasillaInicial(){
}

@Test
public void test10LlegaAMetaSinLlave(){
// Necesito implementar como retroceder a la mitad de las casillas
public void test09LlegaAMetaSinLlave(){
Casilla ultima = new Casilla( new SinInteraccion());
Casilla anteultima = new Casilla(ultima, new SinInteraccion());
ultima.setAnterior(anteultima);
Casilla segunda = new Casilla(anteultima, new SinInteraccion());
segunda.setAnterior(anteultima);
Casilla primera = new Casilla(segunda, new SinInteraccion());
}

@Test
Expand Down

0 comments on commit 7e0974f

Please sign in to comment.