Simulador de combate por turnos entre dos dragones, con fase de entrenamiento y aserciones de invariantes
Ejercicio de la asignatura de Programación sobre estructuras de control y funciones. Simula un combate por turnos entre dos dragones, y aunque el tema es una excusa, la lógica que hay dentro no es trivial.
El programa pide nombre y edad de cada dragón, convierte la edad con
try/except usando 100 años como valor por defecto si falla, y los
clasifica en Joven (menos de 50), Adulto (50 a
199) o Anciano (200 o más). Dos funciones documentadas resuelven el
cálculo: calculaFuerzaBase(edad) devuelve 10, 15 o 12 según la
clasificación, y turnoDeAtaque(fuerza, resistencia_enemigo) aplica la
fórmula fuerza − (resistencia // 3) con mínimo cero.
Después hay una fase de entrenamiento de tres días donde los
jóvenes ganan 2 puntos de fuerza y resistencia por día y los demás 1, y el duelo
real: un while que se ejecuta mientras ambos tengan salud, con dos
mordiscos por turno y salida anticipada en cuanto uno cae.
fuerza // 2 + 5.fuerza − (resistencia_enemigo //
3), nunca negativa.try/except alrededor de un int() es la forma de
que el programa no muera porque el usuario escriba "cien", y que hay que decidir qué
valor por defecto usar.Autor del ejercicio. Práctica individual de la asignatura de Programación.
Ejercicio académico completado en su versión 0.2, disponible en el repositorio de apuntes.
Ruta dentro del repositorio: Ejercicios/EJ -
CLASE/0110-EJ-codigo-dragones.py