# Challenge 90 - The Mini Battle Arena
import random

MAX_HEALTH = 28
TURN_LIMIT = 12

def apply_action(player_hp, enemy_hp, action, rng=None):
    rng = rng if rng is not None else random
    defending = action == "defend"
    if action == "attack":
        enemy_hp = max(0, enemy_hp - rng.randint(4, 8))
    elif action == "heal":
        player_hp = min(MAX_HEALTH, player_hp + rng.randint(3, 6))
    if enemy_hp > 0:
        damage = rng.randint(2, 6)
        if defending:
            damage = damage // 2
        player_hp = max(0, player_hp - damage)
    return player_hp, enemy_hp

def main():
    player_hp, enemy_hp = MAX_HEALTH, 24
    for turn in range(1, TURN_LIMIT + 1):
        print(f"Turn {turn}: You {player_hp} | Opponent {enemy_hp}")
        action = input("attack/heal/defend: ").strip().lower()
        while action not in ("attack", "heal", "defend"):
            action = input("Choose attack, heal or defend: ").strip().lower()
        player_hp, enemy_hp = apply_action(player_hp, enemy_hp, action)
        if enemy_hp == 0:
            print("You win!")
            return
        if player_hp == 0:
            print("You lose!")
            return
    print("Turn limit reached: draw.")

if __name__ == "__main__":
    main()
