Ejercicio de repaso para el primer parcial.
Created
May 11, 2018 14:31
-
-
Save tiagox/8a287126c6c7039e19cf8cb938738aea to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Arquero extends Unidad { | |
int flechas; | |
public Arquero() { | |
super(); | |
this.flechas = 20; | |
this.salud = 50; | |
} | |
@Override | |
public boolean puedeAtacar(Unidad unidad) { | |
/* | |
* B. Los arqueros pueden atacar a una distancia de entre 2 y 5 respecto de su | |
* enemigo, y si tienen suficientes flechas. Infringen un daño de 5 puntos, y | |
* comienzan con 50 de salud. | |
*/ | |
return estaVivo() && this.flechas > 0 && numeroEntre(this.posicion.distanciaCon(unidad.posicion), 2, 5); | |
} | |
private boolean numeroEntre(double numero, double limiteInferior, double limiteSuperior) { | |
return numero >= limiteInferior && numero <= limiteSuperior; | |
} | |
@Override | |
public int obtenerDaño() { | |
return 5; | |
} | |
@Override | |
public void despuesDeAtacar() { | |
this.flechas--; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Posicion { | |
private double x, y; | |
public double distanciaCon(Posicion posicion) { | |
return Math.sqrt(Math.pow(this.x - posicion.x, 2) + Math.pow(this.y - posicion.y, 2)); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Soldado extends Unidad { | |
/* | |
* A. Los soldados pueden atacar cuerpo a cuerpo a otras unidades si tienen | |
* suficiente energía. Infringen un daño de 10 puntos, y comienzan con 200 de | |
* salud. B. Los arqueros pueden atacar a una distancia de entre 2 y 5 respecto | |
* de su enemigo, y si tienen suficientes flechas. Infringen un daño de 5 | |
* puntos, y comienzan con 50 de salud. C. Los lanceros pueden atacar a una | |
* distancia de 1 a 3, sin condición. Infringen un daño de 25 puntos, y | |
* comienzan con 150 de salud. D. Los caballeros pueden atacar a una distancia | |
* de 1 a 2, siempre que su caballo no se haya puesto rebelde. Infringe un daño | |
* de 50 puntos y comienza con 200 de salud. Un caballo se pone rebelde luego de | |
* 3 ataques. Ninguna unidad muerta pueda atacar, por supuesto. | |
*/ | |
int energia = 100; | |
public Soldado() { | |
super(); | |
this.salud = 200; | |
} | |
@Override | |
public boolean puedeAtacar(Unidad unidad) { | |
return estaVivo() && energia > 0; | |
} | |
@Override | |
public int obtenerDaño() { | |
return 10; | |
} | |
@Override | |
public void despuesDeAtacar() { | |
this.energia -= 10; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public abstract class Unidad { | |
protected Posicion posicion; | |
protected int salud; | |
public abstract boolean puedeAtacar(Unidad unidad); | |
public abstract int obtenerDaño(); | |
public abstract void despuesDeAtacar(); | |
public final void atacar(Unidad unidad) { | |
if (puedeAtacar(unidad)) { | |
unidad.recibirAtaque(obtenerDaño()); | |
} | |
despuesDeAtacar(); | |
} | |
private void recibirAtaque(int daño) { | |
this.salud = Math.max(0, this.salud - daño); | |
} | |
protected boolean estaVivo() { | |
return this.salud > 0; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hola, alguien tiene el main de este ejercicio?