11from __future__ import annotations
2- import os
3- import json
4- from models .aventura_classes import Guerreiro , Mago
5- from equipamentos import PocaoDeVida
62
73from utils import controle_personagem
84from utils import controle_missao
@@ -25,187 +21,28 @@ def __init__(self) -> None:
2521 # Estado do personagem
2622 self .personagem = {"nome" : None , "arquetipo" : None }
2723
28- # menu personagem
29- def menu_personagem (self ):
30- """
31- Menu dedicado às operações relacionadas ao personagem:
32- criar, ver, inventário, criação de itens.
33- """
34- while True :
35- print ("\n === Menu de Personagem ===" )
36- print ("[1] Criar personagem" )
37- print ("[2] Ver personagem" )
38- print ("[3] Checar inventário" )
39- print ("[4] Criar item" )
40- print ("[5] Usar item" )
41- print ("[6] Adicionar item ao inventário" )
42- print ("[0] Voltar ao menu principal" )
24+ # Objeto completo do personagem (classe Guerreiro/Mago)
25+ self .personagem_obj = None
4326
4427 # Estado da missão
4528 self .missao_config = {"dificuldade" : "Fácil" , "cenario" : "Trilha" }
4629
4730 # Repositório de salvamento (importado do módulo utils/salvamento)
4831 self .repo = salvamento .repo
4932
50- elif op == "2" :
51- self .ver_personagem ()
52-
53- elif op == "3" :
54- self .checar_inventario ()
55-
56- elif op == "5" :
57- self .usar_item_personagem ()
58-
59- elif op == "6" :
60- item = print ("Informe o nome do item a adicionar:" )
61- self .personagem .adicionar_item (item )
62-
63- elif op == "0" :
64- break
65-
66- else :
67- print ("Opção inválida. Tente novamente." )
33+ # Últimos caminhos usados
34+ self ._ultimo_save = None
35+ self ._ultimo_load = None
6836
6937 # ================================================================
7038 # ROTAS (encaminham chamadas a módulos externos)
7139 # ================================================================
7240
7341 def criar_personagem (self ) -> None :
74- """
75- Fluxo interativo de criação de personagem jogável.
76-
77- Responsável por instanciar e armazenar um objeto de personagem (Guerreiro ou Mago)
78- com base na entrada do usuário. Garante consistência entre `personagem_obj`
79- e o dicionário de metadados `self.personagem`.
80-
81- Rules:
82- - O nome é obrigatório.
83- - A classe é escolhida entre as opções implementadas (1 ou 2).
84- - Nenhum dado é persistido neste estágio.
85-
86- Side effects:
87- - Cria `self.personagem_obj`
88- - Atualiza `self.personagem["nome"]` e `self.personagem["arquetipo"]`
89- """
90- print ("=== Criação de Personagem ===" )
91- nome = input ("Digite o nome do seu personagem: " ).strip ()
92-
93- print ("\n Escolha uma classe:" )
94- print ("[1] Guerreiro - Alta vida e defesa, ataque físico forte." )
95- print ("[2] Mago - Usa mana e ataques mágicos poderosos." )
96-
97- while True :
98- escolha = input ("> " ).strip ()
99- if escolha == "1" :
100- personagem = Guerreiro (nome )
101- break
102- elif escolha == "2" :
103- personagem = Mago (nome )
104- break
105- else :
106- print ("Opção inválida. Escolha 1 ou 2." )
107-
108- print ("\n Personagem criado com sucesso!" )
109- print (f"Nome: { personagem .nome } " )
110- print (f"Classe: { 'Guerreiro' if isinstance (personagem , Guerreiro ) else 'Mago' } " )
111- print (f"Vida: { personagem .vida } " )
112- print (f"Ataque: { personagem .ataque } " )
113- print (f"Defesa: { personagem .defesa } " )
114- print (f"Mana: { personagem .mana } " )
115-
116- self .personagem_obj = personagem
117- self .personagem ["nome" ] = nome
118- self .personagem ["arquetipo" ] = (
119- "Guerreiro" if isinstance (personagem , Guerreiro ) else "Mago"
120- )
121-
122-
123- # =====================================================
124- # VER PERSONAGEM
125- # =====================================================
126- def ver_personagem (self ):
127- if not self .personagem_obj :
128- print ("Nenhum personagem criado ainda." )
129- return
130-
131- p = self .personagem_obj
132- print ("\n === Personagem Atual ===" )
133- print (f"Nome: { p .nome } " )
134- print (f"Vida: { p .vida } " )
135- print (f"Ataque: { p .ataque } " )
136- print (f"Defesa: { p .defesa } " )
137- if hasattr (p , "mana" ):
138- print (f"Mana: { p .mana } " )
139-
140- # =====================================================
141- # CHECAR INVENTÁRIO
142- # =====================================================
143- def checar_inventario (self ):
144- if not self .personagem_obj :
145- print ("Nenhum personagem criado." )
146- return
147-
148- inventario = self .personagem_obj .inventario
149-
150- print ("\n === Inventário ===" )
151- if not inventario :
152- print ("(vazio)" )
153- else :
154- for i , item in enumerate (inventario , 1 ):
155- print (f"{ i } . { item } " )
156-
157-
158- # =====================================================
159- # USAR ITEM
160- # =====================================================
161- def usar_item_personagem (self ):
162- if not self .personagem_obj :
163- print ("Nenhum personagem criado." )
164- return
165-
166- nome_item = input ("Digite o nome do item a ser usado: " ).strip ()
167- resultado = self .personagem_obj .usar_item (nome_item )
168- print (resultado )
169-
170- # =====================================================
171- # ========== MENU PRINCIPAL ===========================
172- # =====================================================
173-
174- def menu_principal (self ) -> None :
175- """
176- Loop principal de execução do jogo.
177-
178- Exibe o menu principal e redireciona o fluxo para os submenus:
179- criação de personagem, missões, salvar/carregar e saída.
180-
181- Este método bloqueia a execução até que o usuário escolha sair.
182- """
183- while True :
184- print ("\n === MENU PRINCIPAL ===" )
185- print ("[1] Criar novo personagem" )
186- print ("[2] Ver informações do personagem" )
187- print ("[3] Missão" )
188- print ("[4] Salvar Jogo (simulado)" )
189- print ("[5] Carregar Jogo (simulado)" )
190- print ("[0] Sair" )
191-
192- opcao = input ("> " ).strip ()
193-
194- if opcao == "1" :
195- self .criar_personagem ()
196- elif opcao == "2" :
197- self .ver_personagem ()
198- elif opcao == "3" :
199- self .menu_missao ()
200- elif opcao == "4" :
201- self .menu_salvar ()
202- elif opcao == "5" :
203- self .menu_carregar ()
204- elif opcao == "0" :
205- print ("Saindo do jogo..." )
206- break
207- else :
208- print ("Opção inválida. Tente novamente." )
42+ try :
43+ controle_personagem .criar_personagem (self )
44+ except Exception as e :
45+ print (f"[ERRO] criar_personagem: { e } " )
20946
21047 def ver_personagem (self ) -> None :
21148 try :
0 commit comments