Untitled

 avatar
unknown
plain_text
a month ago
2.5 kB
7
Indexable
import random
import time

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}")
    
def iniciar_batalha(lutador1, lutador2):
    print("================================")
    print("QUE COMECE A BATALHA")
    print(f"{lutador1.nome} (HP: {lutador1.hp}) VS {lutador2.nome} (HP: {lutador2.hp})")
    print("================================")
    time.sleep(2)
 
    turno = 1
    while lutador1.esta_vivo() and lutador2.esta_vivo():
        print(f"\n--- TURNO {turno} ---")
        time.sleep(1)
        lutador1.atacar(lutador2)
        time.sleep(1.5)
 
        if not lutador2.esta_vivo():
            break
        lutador2.atacar(lutador1)
        time.sleep(1.5)
        turno += 1
 
    print("\n================================")
    print("FIM DE JOGO")
    if lutador1.esta_vivo():
        print(f"VENCEDOR: {lutador1.nome} restando {lutador1.hp} de HP!")
    elif lutador2.esta_vivo():
        print(f"VENCEDOR: {lutador2.nome} restando {lutador2.hp} de HP!")
    else:
        print("EMPATE! Ambos caíram.")
    print("================================")

he_man = Guerreiro("EU TENHO A FORÇA", 100, 10, 5)
patolino = Mago("Patolino, o Místico Mago", 150, 150)

iniciar_batalha(he_man, patolino)
Editor is loading...
Leave a Comment