Ejercicio práctico sobre herencia y clases abstractas en Java basado en el videojuego Bloodborne. El proyecto simula un sistema de combate entre Cazadores y Enemigos.
Este proyecto implementa un diseño donde las clases interactúan directamente entre sí:
- Cazadores atacan a Enemigos: El método
atacarA(Enemigo enemigo)
recibe directamente una instancia de Enemigo como parámetro - Enemigos atacan a Cazadores: El método
atacarA(Cazador cazador)
recibe directamente una instancia de Cazador como parámetro
Esta característica permite:
- Modificar directamente los puntos de vida del oponente
- Implementar mecánicas específicas según el tipo de personaje
- Crear un sistema de combate realista e intuitivo
Cazador.java
: Define características básicas y el método abstractoatacarA(Enemigo)
Enemigo.java
: Define características básicas y el método abstractoatacarA(Cazador)
BestiaLicantropaEjemplo.java
: Enemigo con capacidad de transformación y acumulación de furiaCazadorLigeroEjemplo.java
: Cazador con ataques rápidos basados en velocidad
-
Estudia las clases abstractas proporcionadas
-
Crea tres clases concretas que hereden de
Cazador
:- Implementa el método abstracto
atacarA(Enemigo)
- Añade características únicas a cada clase
- Ejemplos: CazadorFuerza, CazadorDestreza, CazadorArcano
- Implementa el método abstracto
-
Crea tres clases concretas que hereden de
Enemigo
:- Implementa el método abstracto
atacarA(Cazador)
- Añade características únicas a cada clase
- Ejemplos: BestiaDeLaPlaga, BestiaClerigo, CazadorCorrompido
- Implementa el método abstracto
-
En el método
main
deEjercicioBloodborne.java
:- Crea instancias de tus clases
- Muestra sus estadísticas iniciales con
toString()
- Haz que se ataquen mutuamente usando el método
atacarA()
- Muestra sus estadísticas después de los ataques
- Determina cuál de los dos ha vencido
En la clase BestiaLicantropaEjemplo.java
se muestra cómo:
@Override
public int atacarA(Cazador cazador) {
// Cálculo del daño
int danio = 15;
// Aplicación directa del daño
cazador.setVitalidad(cazador.getVitalidad() - danio);
// Mensaje descriptivo
System.out.println(this.nombre + " ataca salvajemente a " +
cazador.getNombre() + " causando " + danio + " puntos de daño.");
return danio;
}
Desarrollado como ejercicio educativo de programación orientada a objetos