Skip to content

Commit 3aa77a3

Browse files
authored
implementaçao de drop de itens
1 parent 368399a commit 3aa77a3

File tree

3 files changed

+82
-6
lines changed

3 files changed

+82
-6
lines changed

models/inimigo.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,22 @@
33

44

55
class Inimigo(Entidade):
6-
def __init__(self, nome, vida, ataque, defesa, efeitos, nome_ataque):
6+
def __init__(self, nome, vida, ataque, defesa, efeitos, nome_ataque, drop_item):
77
self.nome = nome
88
self.vida = vida
99
self.ataque = ataque
1010
self.defesa = defesa
1111
self.efeitos = {"Sangramento": {"dano": 2, "turnos": 3}}
1212
self.nome_ataque = nome_ataque
13+
self drop_item = drop_item
14+
15+
self.tabela_drop = [
16+
{"item:" Item("Poção de Vida", 30), "chance:" 50},
17+
{"item:" Item("Poção Forte", 60), "chance:" 25},
18+
{"item:" Item("Moeda Antiga", 0), "chance:" 10},
19+
{"item:" Item("Adaga do ladrão", 1), "chance:" 33},
20+
{"item:" Item("Chifre do demônio", 1), "chance:" 12}
21+
]
1322

1423
def calcular_dano_base(self):
1524

@@ -30,6 +39,10 @@ def esta_vivo(self):
3039
return self.vida > 0
3140

3241

42+
def tabela_drop(self)
43+
return self._tabela_drop
44+
45+
3346
class Goblin(Inimigo):
3447

3548
def __init__(self, nome, nome_ataque):

models/jogo.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,42 @@ def menu_carregar(self) -> None:
232232
salvamento.menu_carregar(self)
233233
except Exception as e:
234234
print(f"[ERRO] menu_carregar: {e}")
235+
236+
237+
238+
239+
240+
# Loop de combate simples
241+
while jogador.vida > 0 and inimigo.vida > 0:
242+
print(f"\n--- Turno {turno} ---")
243+
244+
# Ataque do jogador
245+
dano_jogador = max(jogador.ataque - inimigo.defesa, 0)
246+
inimigo.vida -= dano_jogador
247+
log_batalha.append(
248+
f"{jogador.nome} causou {dano_jogador} de dano em {inimigo.nome}."
249+
)
250+
251+
if inimigo.vida <= 0:
252+
print(f"{inimigo.nome} foi derrotado!")
253+
if itens_dropados:
254+
print("\nItens dropados:")
255+
for item in itens_dropados:
256+
print(f" - {item.get_nome()}")
257+
jogador.get_inventario().adicionar_item(item)
258+
else:
259+
print("Nenhum item foi dropado.")
260+
261+
break
262+
263+
264+
dano_inimigo = max(inimigo.ataque - jogador.defesa, 0)
265+
jogador.vida -= dano_inimigo
266+
log_batalha.append(
267+
f"{inimigo.nome} causou {dano_inimigo} de dano em {jogador.nome}."
268+
)
269+
270+
print(
271+
f"🧙 {jogador.nome} HP: {jogador.vida} | ⚔️ {inimigo.nome} HP: {inimigo.vida}"
272+
)
273+
turno += 1

models/personagem.py

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
from __future__ import annotations
22
import random
3+
from inventario import Inventario # se estiver em outro arquivo
4+
5+
6+
37

48
class Aventureiro:
59
def __init__(self, nome, vida, ataque, defesa, mana=0):
@@ -10,9 +14,13 @@ def __init__(self, nome, vida, ataque, defesa, mana=0):
1014
self.defesa = defesa
1115
self.mana = mana
1216
self.mana_max = mana
13-
self.inventario = []
17+
self.inventario = Inventario()
1418
self.nivel = 1
1519
self.xp = 0
20+
21+
22+
self.inventario = Inventario()
23+
1624

1725
def get_ataque(self):
1826
return self.ataque
@@ -24,14 +32,14 @@ def set_mana(self, mana):
2432
self.mana = min(mana, self.mana_max)
2533

2634
def get_inventario(self):
27-
return self.inventario
35+
return self.inventario.listar_itens()
2836

2937
def adicionar_item(self, item):
30-
self.inventario.append(item)
38+
self.inventario.adicionar_item(item)
3139

3240
def remover_item(self, item):
33-
if item in self.inventario:
34-
self.inventario.remove(item)
41+
self.inventario.remover_item(item)
42+
3543

3644
def receber_dano(self, dano):
3745
dano_final = max(0, dano - self.defesa)
@@ -66,6 +74,22 @@ def subir_nivel(self):
6674

6775
self.vida = self.vida_max
6876
self.mana = self.mana_max
77+
78+
79+
def dropar_itens(self, Aventureiro):
80+
Itens_dropados = []
81+
82+
for entrada in self.tabela_drop:
83+
item = entrada["item"]
84+
chance = entrada["chance"]
85+
86+
rolagem = random.randint(1, 100)
87+
if rolagem <= chance:
88+
heroi.adicionar_item(item)
89+
itens_dropados.append(item)
90+
91+
return itens_dropados
92+
6993

7094

7195
def usar_item(self, nome_item: str):

0 commit comments

Comments
 (0)