Skip to content

Latest commit

 

History

History
78 lines (50 loc) · 5.29 KB

README.md

File metadata and controls

78 lines (50 loc) · 5.29 KB

ReturnToYharnam

Descripción

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.

Característica Principal: Interacción Directa entre Clases

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

Estructura del Proyecto

Clases Abstractas

  • Cazador.java: Define características básicas y el método abstracto atacarA(Enemigo)
  • Enemigo.java: Define características básicas y el método abstracto atacarA(Cazador)

Clases de Ejemplo

  • BestiaLicantropaEjemplo.java: Enemigo con capacidad de transformación y acumulación de furia
  • CazadorLigeroEjemplo.java: Cazador con ataques rápidos basados en velocidad

Instrucciones

  1. Estudia las clases abstractas proporcionadas

  2. 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
  3. 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
  4. En el método main de EjercicioBloodborne.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

Ejemplo de Implementación

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