Academia-Cimne-Iber-Developers / java-rpg-ex

Proyecto Java demostrando principios
1 stars 43 forks source link

Sistema de Combate por Turnos #15

Open santiemanuel opened 3 weeks ago

santiemanuel commented 3 weeks ago

Descripción

Actualmente, nuestro sistema de combate es básico y no ofrece muchas opciones estratégicas al jugador. Necesitamos mejorar el sistema de combate para que sea más interactivo y estratégico, permitiendo al jugador elegir acciones por turnos.

Objetivos

  1. Implementar un sistema de combate por turnos.
  2. Ofrecer al jugador múltiples opciones de acción durante el combate.
  3. Introducir un sistema de críticos que se acumula durante el combate.
  4. Permitir el uso de pociones durante el combate.

Requerimientos Funcionales

  1. El jugador puede elegir entre las siguientes acciones en su turno:
    • Atacar: Realiza un ataque considerando el porcentaje de crítico actual, el porcentaje crítico inicia en 0%.
    • Bloquear: Reduce en un 50% el daño a recibir en el próximo turno.
    • Cargar: Aumenta la probabilidad de crítico y el daño del próximo ataque. El crítico aumenta un 50% el daño causado.
    • Curarse: Permite usar una poción del inventario para recuperar vida.
  2. El enemigo siempre atacará en su turno si sigue vivo.
  3. El sistema de críticos debe:
    • Iniciar en 0% al comienzo de cada combate.
    • Aumentar en 15% por cada acción de "Cargar" hasta un máximo de 80%.
    • Aumentar el daño infligido en un 50% cuando se active.
    • Resetear el porcentaje de crítico a 0% si se produjo un golpe crítico (se incluye esto como ejemplo).
  4. La interfaz de usuario debe actualizarse para mostrar las opciones de combate y el porcentaje de crítico actual.

Cambios Propuestos

1. Modificar la clase GestorCombate

2. Crear una interfaz AccionCombate

public interface AccionCombate {
    void ejecutar(Jugador jugador, Enemigo enemigo, GestorCombate gestorCombate);
}

Ejemplo de base para ataques:

    @Override
    public void ejecutar(Jugador jugador, Enemigo enemigo, GestorCombate gestorCombate) {
        int danio = jugador.getAtaque();
        if (Math.random() * 100 < gestorCombate.getPorcentajeCritico()) {
            danio *= 1.5;
            gestorCombate.resetearPorcentajeCritico();
        }
        enemigo.recibirDanio(danio);
        gestorCombate.getInterfaz().mostrarMensaje("Has atacado al enemigo causando " + danio + " de daño.");
    }

3. Implementar clases concretas para cada acción

4. Modificar la clase Jugador

5. Actualizar la clase Interfaz

Criterios de Aceptación

  1. El jugador puede elegir entre las cuatro acciones especificadas durante su turno de combate.
  2. El sistema de críticos funciona correctamente, aumentando con la acción "Cargar" y reiniciándose para cada nuevo combate.
  3. La acción "Bloquear" reduce el daño recibido en el siguiente turno en un 50%.
  4. La acción "Cargar" aumenta tanto la probabilidad de crítico.
  5. El jugador puede usar pociones para curarse durante el combate.
  6. La interfaz de usuario muestra claramente las opciones de combate y el porcentaje de crítico actual.
  7. El enemigo ataca en cada uno de sus turnos si sigue con vida.
  8. El sistema es fácilmente extensible para agregar nuevas acciones de combate en el futuro.
Ger678 commented 3 weeks ago

Hola Profe quiero anotarme para este enhancement !

santiemanuel commented 3 weeks ago

Hola Profe quiero anotarme para este enhancement !

Hola Germán, listo anotado

MarceGuil commented 3 weeks ago

Hola Profe, yo me quiero anotar para esta tarea

santiemanuel commented 3 weeks ago

Hola Profe, yo me quiero anotar para esta tarea

Hola Marcela, listo ya te anoté

Gonzalez-Gaston commented 3 weeks ago

Buenas noches profe nos podría asignar esta tarea a mi grupo y a mi gracias.

santiemanuel commented 3 weeks ago

Buenas noches profe nos podría asignar esta tarea a mi grupo y a mi gracias.

Hola Gastón, bien, me podés pasar los nombres y usuarios de github de tu grupo?

Hasta acá se reciben propuestas para esta issue.

Gonzalez-Gaston commented 3 weeks ago

estos son los integrantes aparte de mi: Daniel Marcelo Chachagua Garrido, usuario: DanielChachagua Camacho Pablo Rubén, usuario: prcamacho Gustavo Omar Paredez, usuario: PicoHBK

Rox1404 commented 3 weeks ago

Buenas profesor, queremos trabajar en alguna de las tareas q nos asigne somos un grupo.

santiemanuel commented 3 weeks ago

Buenas profesor, queremos trabajar en alguna de las tareas q nos asigne somos un grupo.

Hola Rosana, bueno me podés pasar los nombres y users de tus compañeros para anotarlos.

Rox1404 commented 2 weeks ago

Si profe, Rodrigo Reyes , Lourdes Videla, Lorena Rodriguez y yo

Josed278 commented 2 weeks ago

todavia se puede trabajar en la de Combate por turnos

gabyelizabet commented 2 weeks ago

Buenas noches profe, le dejo mis datos por aquí para trabajar en esta issue. Gabriela Miguel

santiemanuel commented 2 weeks ago

todavia se puede trabajar en la de Combate por turnos

Si ya te anoté

mili4400 commented 2 weeks ago

Profesor todavía puedo trabajar en esta issue

migue212852 commented 2 weeks ago

buenas noches profe. Disculpe la hora. Puedo anotarme en esta issue?