Untitled

 avatar
unknown
plain_text
2 months ago
1.3 kB
7
Indexable
import random

class Personagem:
    def __init__(self, nome, hp, ataque):
        self.nome = nome
        self.hp = hp
        self.ataque = ataque
    def esta_vivo(self):
        return self.hp > 0
    def receber_dano(self, dano):
        self.hp -= dano
        if self.hp < 0:
            self.hp = 0
    def atacar(self, alvo):
        print(f"\n{self.nome} ataca {alvo.nome}")
        alvo.receber_dano(self.ataque)
        print(f"{alvo.nome} sofreu {self.ataque} de dano. HP restante: {alvo.hp}")

class Guerreiro(Personagem):
    def __init__(self, nome, hp, ataque, defesa):
        super().__init__(nome, hp, ataque)
        self.defesa = defesa
    
    def receber_dano(self, dano):
        dano_real = max(0, dano - self.defesa)
        super().receber_dano(dano_real)
        if dano - dano_real > 0:
            print(f"\n{self.nome} usou o escudo e bloqueou o ataque!")

class Mago(Personagem):
    def atacar(self, alvo):
        dano = self.ataque
        print(f"\n{self.nome} lança uma magia em {alvo.nome}")
        if random.random() < 0.30:
            dano *= 2
            print("\nATAQUE CRÍTICO\n")
        alvo.receber_dano(dano)
        print(f"{alvo.nome} sofreu {self.ataque} de dano. HP restante: {alvo.hp}")
    
Editor is loading...
Leave a Comment