Você está implementando um sistema de batalha para um jogo de RPG simples. Um herói está lutando contra vários monstros, e precisa determinar o resultado de cada escaramuça. O herói e os monstros compartilham algumas estatísticas:
Para qualquer um dos dois, o dano causado é calculado subtraindo a defesa do oponente do ataque do atacante multiplicado por dois.
Em cada rodada, o herói ataca primeiro, e seu dano é subtraído do HP do monstro. Se o monstro sobreviver (HP > 0), ele ataca. Se o herói sobreviver (HP > 0), uma nova rodada começa. O herói também pode ter algumas POT, ou Healing Potions, na mochila: quando seu HP for igual ou menor que 10, ele deve usar uma poção no início de uma nova rodada para recuperar 10 HP. Ao se curar, ele não pode atacar, mas recebe apenas metade do dano do ataque do monstro. Cada poção pode ser usada apenas uma vez e então deve ser descartada.
Dado um dicionário contendo as estatísticas dos personagens (as chaves com prefixo p correspondem ao herói e as com prefixo m ao monstro), você deve retornar uma string:
(com x sendo o número de rodadas decorridas)
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