NICOLÁS BOTTARINI
RPG Combat

RPG Combat

Un juego de rol divertido para mejorar tus habilidades de TDD y diseño

Nivel:Avanzado
Duración:Larga
Temas:
TDDClean CodeDiseñoOOPSOLIDPatrones de diseñoOutside-In

Contexto

Es una kata divertida en la que vas armando reglas simples de combate, como las de un juego de rol (RPG). Se resuelve en una secuencia de iteraciones. El dominio no incluye un mapa ni otras habilidades de los personajes, más allá de poder hacerse daño y curarse entre ellos.

Instrucciones

  1. Completá cada iteración antes de leer la siguiente.
  2. Se recomienda hacer esta kata en pareja y escribiendo tests.

Iteraciones

Iteración 1
  1. Todos los Personajes, al crearse, tienen:
  • Salud, que arranca en 1000.
  • Nivel, que arranca en 1.
  • Pueden estar Vivos o Muertos, y arrancan Vivos (Vivo puede ser un true/false).
  1. Los Personajes pueden Hacer Daño a otros Personajes.
  • El Daño se resta de la Salud.
  • Cuando el daño recibido supera la Salud actual, la Salud queda en 0 y el personaje muere.
  1. Un Personaje puede Curar a un Personaje.
  • Los personajes muertos no se pueden curar.
  • La curación no puede subir la salud por encima de 1000.
Iteración 2
  1. Un Personaje no puede Hacerse Daño a sí mismo.
  2. Un Personaje solo puede Curarse a sí mismo.
  3. Al hacer daño:
  • Si el objetivo está 5 o más Niveles por encima del atacante, el Daño se reduce un 50%.
  • Si el objetivo está 5 o más Niveles por debajo del atacante, el Daño aumenta un 50%.
Iteración 3
  1. Los Personajes tienen un Rango Máximo de ataque.
  2. Los luchadores cuerpo a cuerpo (Melee) tienen un rango de 2 metros.
  3. Los luchadores a distancia (Ranged) tienen un rango de 20 metros.
  4. Los Personajes tienen que estar dentro del rango para hacerle daño a un objetivo.
Retrospectiva
  • ¿Estás llegando con los requisitos? ¿Alguna iteración fue un desafío grande?
  • ¿Estás conforme con tu diseño? ¿Escala y se adapta fácil a requisitos nuevos?
  • ¿Está todo testeado? ¿Le tenés confianza a tu código?
Iteración 4
  1. Los Personajes pueden pertenecer a una o más Facciones.
  • Los Personajes recién creados no pertenecen a ninguna Facción.
  1. Un Personaje puede Unirse a una o más Facciones o Dejarlas.
  2. Los jugadores que pertenecen a la misma Facción se consideran Aliados.
  3. Los Aliados no se pueden Hacer Daño entre ellos.
  4. Los Aliados se pueden Curar entre ellos.
Iteración 5
  1. Los Personajes pueden hacerle daño a cosas que no son personajes (props).
  • Cualquier cosa que tenga Salud puede ser un objetivo.
  • Estas cosas no se pueden Curar y no Hacen Daño.
  • Estas cosas no pertenecen a Facciones; son neutrales.
  • Cuando su Salud llega a 0, las cosas quedan Destruidas.
  • Por ejemplo, podés crear un Árbol con 2000 de Salud.
Retrospectiva
  • ¿Qué problemas encontraste?
  • ¿Qué aprendiste? ¿Alguna técnica o patrón nuevo?
  • Compartí tu diseño con otros y pedí feedback sobre enfoques distintos.

Soluciones

  • Kotlin de Nicolás Bottarini

Créditos