Skip to content

Commit 8880670

Browse files
committed
feat: atualizações de novos arquetipos
1 parent 098dc62 commit 8880670

File tree

2 files changed

+59
-9
lines changed

2 files changed

+59
-9
lines changed

models/personagem.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,48 @@ def atacar(self, alvo):
150150
if dano > 0:
151151
return dano
152152
return self.calcular_dano_basico(alvo)
153+
154+
155+
class Arqueiro(Aventureiro):
156+
def __init__(self, nome):
157+
super().__init__(nome, vida=90, ataque=13, defesa=6, mana=40)
158+
159+
def flecha_critica(self, alvo):
160+
dano = self.ataque * 2
161+
alvo.receber_dano(dano)
162+
return dano
163+
164+
def chuva_de_flechas(self, alvo):
165+
total = 0
166+
for _ in range(3):
167+
dano = max(0, (self.ataque // 2) - alvo.defesa)
168+
alvo.receber_dano(dano)
169+
total += dano
170+
return total
171+
172+
def atacar(self, alvo):
173+
escolha = random.choice(["critico", "chuva"])
174+
if escolha == "critico":
175+
return self.flecha_critica(alvo)
176+
return self.chuva_de_flechas(alvo)
177+
178+
179+
class Ladrao(Aventureiro):
180+
def __init__(self, nome):
181+
super().__init__(nome, vida=85, ataque=12, defesa=4, mana=30)
182+
183+
def ataque_furtivo(self, alvo):
184+
dano = self.ataque * 2.2
185+
alvo.receber_dano(dano)
186+
return dano
187+
188+
def cortar_garganta(self, alvo):
189+
dano = self.ataque * 1.2
190+
alvo.receber_dano(dano)
191+
return dano
192+
193+
def atacar(self, alvo):
194+
chance = random.random()
195+
if chance < 0.35:
196+
return self.ataque_furtivo(alvo)
197+
return self.cortar_garganta(alvo)

utils/controle_personagem.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,16 @@ def escolher_arquetipo(jogo) -> None:
6363
print("\nArquétipos disponíveis:")
6464
print("[1] Guerreiro")
6565
print("[2] Mago")
66-
print("[3] Arqueiro (indisponível)")
67-
print("[4] Curandeiro (indisponível)")
66+
print("[3] Arqueiro")
67+
print("[4] Ladrão")
6868

6969
op = input("> ").strip()
7070

7171
mapa = {
7272
"1": "Guerreiro",
7373
"2": "Mago",
74-
"3": "Arqueiro", # ainda não implementado
75-
"4": "Curandeiro", # ainda não implementado
74+
"3": "Arqueiro",
75+
"4": "Ladrão",
7676
}
7777

7878
arq = mapa.get(op)
@@ -103,19 +103,24 @@ def confirmar_criacao(jogo) -> None:
103103
print("\nPersonagem criado com sucesso!")
104104
print(f"Nome: {nome} | Arquétipo: {arq}")
105105

106-
# ================================
107-
# Instancia a classe correta
108-
# ================================
109106
if arq == "Guerreiro":
110107
jogo.personagem_obj = Guerreiro(nome)
111108
elif arq == "Mago":
112109
jogo.personagem_obj = Mago(nome)
110+
elif arq == "Arqueiro":
111+
from models.personagem import Arqueiro
112+
113+
jogo.personagem_obj = Arqueiro(nome)
114+
elif arq == "Ladrão":
115+
from models.personagem import Ladrao
116+
117+
jogo.personagem_obj = Ladrao(nome)
113118
else:
114-
print("⚠ Arquétipo ainda não implementado. Usando Guerreiro como base.")
119+
print("⚠ Arquétipo desconhecido. Usando Guerreiro como fallback.")
115120
jogo.personagem_obj = Guerreiro(nome)
116121

117122
print("✔ Objeto do personagem criado!")
118-
print(f"Atributos iniciais:")
123+
print(f"Atributos:")
119124
print(f"Vida: {jogo.personagem_obj.vida}")
120125
print(f"Ataque: {jogo.personagem_obj.ataque}")
121126
print(f"Defesa: {jogo.personagem_obj.defesa}")

0 commit comments

Comments
 (0)