class Hero: username: str health: float damage: float level: int def __init__(self, username: str, level: int, health: float, damage: float): self.username = username self.level = level self.health = health self.damage = damage def battle(self, enemy_hero): if enemy_hero.username == self.username: raise Exception("You cannot fight yourself") if self.health <= 0: raise ValueError("Your health is lower than or equal to 0. You need to rest") if enemy_hero.health <= 0: raise ValueError(f"You cannot fight {enemy_hero.username}. He needs to rest") player_damage = self.damage * self.level enemy_hero_damage = enemy_hero.damage * enemy_hero.level self.health -= enemy_hero_damage enemy_hero.health -= player_damage if self.health <= 0 and enemy_hero.health <= 0: return "Draw" if enemy_hero.health <= 0: self.level += 1 self.health += 5 self.damage += 5 return "You win" enemy_hero.level += 1 enemy_hero.health += 5 enemy_hero.damage += 5 return "You lose" def __str__(self): return f"Hero {self.username}: {self.level} lvl\n" \ f"Health: {self.health}\n" \ f"Damage: {self.damage}\n"