Estás implementando un sistema de batalla para un juego de rol sencillo. Un héroe lucha contra varios monstruos, y debes determinar el resultado de cada escaramuza. El héroe y los monstruos comparten algunas estadísticas:
Para cualquiera de los dos, el daño infligido se calcula restando la defensa del oponente al ataque del atacante multiplicado por dos.
En cada ronda, el héroe ataca primero y su daño se resta de los HP del monstruo. Si el monstruo sobrevive (HP > 0), ataca. Si el héroe sobrevive (HP > 0), comienza una nueva ronda. El héroe también puede tener algunas POT, o Healing Potions, en su mochila: cuando sus HP son iguales o menores que 10, debe usar una poción al comienzo de una nueva ronda para recuperar 10 HP. Al curarse, no puede atacar, pero recibe solo la mitad del daño del ataque del monstruo. Cada poción se puede usar una sola vez y luego debe desecharse.
Dado un diccionario que contiene las estadísticas de los personajes (las claves con prefijo p corresponden al héroe y las de prefijo m al monstruo), debes devolver una cadena:
(donde x es el número de rondas transcurridas)
battle({
"pHP": 12,
"pATT": 10,
"pDEF": 10,
"pPOT": 0,
"mHP": 20,
"mATT": 6,
"mDEF": 14
}) ➞ "Victory in 4 rounds"
# Hero's damage rate = (10 * 2) - 14 = 6
# Monster's damage rate = (6 * 2) - 10 = 2
# Round 1: mHP - 6 = 14, pHP - 2 = 10
# Round 2: No potions to use! mHP - 6 = 8, pHP - 2 = 8
# Round 3: mHP - 6 = 2, pHP - 2 = 6
# Round 4: mHP - 6 = -4 ... monster is dead
battle({
"pHP": 10,
"pATT": 10,
"pDEF": 10,
"pPOT": 2,
"mHP": 10,
"mATT": 8,
"mDEF": 14
}) ➞ "Victory in 3 rounds"
# Hero's damage = 6, monster's damage = 6
# Round 1: mHp - 6 = 4, pHP - 6 = 4
# Round 2: Player uses a potion, heals 10 HP, receive half the monster damage, pHP = 11
# Round 3: mHP - 6 = -2 ... monster is dead
battle({
"pHP": 12,
"pATT": 7,
"pDEF": 6,
"pPOT": 2,
"mHP": 30,
"mATT": 8,
"mDEF": 10
}) ➞ "Game Over in 5 rounds"
# Hero's damage rate = 4, Monster's damage rate = 10
# Round 1: mHP - 4 = 26, pHP - 10 = 2
# Round 2: Hero heals 10 hp, monster hit for 5 HP, pHP = 7
# Round 3: Hero heals 10 hp, monster hit for 5 HP, pHP = 12
# Round 4: mHP - 4 = 22, pHP - 10 = 2
# Round 5: No potions to use! mHP - 4 = 18, pHP - 10 = -8 ... hero is dead