Untitled
unknown
plain_text
2 months ago
2.5 kB
8
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