Skip to content

Commit 86c1ae3

Browse files
committed
docs: documentação do readme
1 parent 677aa19 commit 86c1ae3

File tree

6 files changed

+1283
-0
lines changed

6 files changed

+1283
-0
lines changed

docs/readme/arquitetura.md

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
# 🏛️ Arquitetura do Projeto
2+
3+
### _Visão Geral Profissional_
4+
5+
Este documento descreve a arquitetura do sistema do jogo **RPG Orientado a Objetos**, estruturado em Python.
6+
7+
O projeto utiliza uma combinação de boas práticas arquiteturais adequadas para jogos de terminal, incluindo **MVC,** **Arquitetura em Camadas**, **Repository Pattern**, módulos de serviço e princípios de POO.
8+
9+
---
10+
11+
# 1. Arquitetura Predominante: **MVC (Model–View–Controller)**
12+
13+
Mesmo sem frameworks, o projeto segue de forma clara o padrão **MVC**, separando responsabilidades entre:
14+
15+
---
16+
17+
## **Model — Lógica de Negócio**
18+
19+
Onde ficam as regras principais do jogo, estados e comportamentos.
20+
21+
Localizados na pasta:
22+
23+
<pre class="overflow-visible!" data-start="961" data-end="976"><div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span><span>models/
24+
</span></span></code></div></div></pre>
25+
26+
Inclui:
27+
28+
- `personagem.py` → classes como **Guerreiro**, **Mago**, etc.
29+
- `inventario.py` → controle de itens, equipamentos e consumo.
30+
- `itens.py` e `equipamentos.py` → estrutura de itens do jogo.
31+
- `inimigo.py` → inimigos, chefes, atributos e regras.
32+
- `jogo.py` (parte do domínio) → lógica estrutural do jogo.
33+
- `logger.py` → regras de registro de eventos.
34+
35+
### ✨ Responsabilidades do Model:
36+
37+
- Atributos e estados do jogo
38+
- Regras de combate
39+
- Regras de missão
40+
- Cálculo de dano/defesa
41+
- Manipulação de inventário
42+
- Classes e heranças do personagem
43+
44+
---
45+
46+
## **📌 View — Interface / Exibição**
47+
48+
A interface atual é baseada no terminal:
49+
50+
- `print()` para exibir informações
51+
- `input()` para coletar ações do jogador
52+
53+
Origem:
54+
55+
- Menus (arquivos de menu)
56+
- Exibição de combate
57+
- Exibição de status
58+
- Mensagens de missão
59+
60+
### ✨ Responsabilidades da View:
61+
62+
- Mostrar informações ao jogador
63+
- Receber entrada do usuário
64+
- Não contém lógica de negócio
65+
66+
---
67+
68+
## **📌 Controller — Fluxo / Mediação**
69+
70+
Responsável por “ligar” Model e View.
71+
72+
Exemplos claros:
73+
74+
- `jogo.py` → controla o loop principal, mudanças de menu, criação de personagem
75+
- `controle_missao.py` → gerencia turnos, combate, escolha do jogador
76+
- Funções que interpretam inputs e aplicam ações
77+
78+
### ✨ Responsabilidades do Controller:
79+
80+
- Interpretar ações do usuário
81+
- Chamar métodos do Model
82+
- Atualizar a View
83+
- Controlar fluxo do jogo
84+
85+
---
86+
87+
# 2. Arquitetura de 3 Camadas (Layered Architecture)
88+
89+
O projeto também se organiza muito bem em camadas:
90+
91+
---
92+
93+
## **🔹 Camada 1 — Domínio (Regras do Jogo)**
94+
95+
Representa o **coração da lógica**.
96+
97+
Inclui:
98+
99+
- Personagens
100+
- Inimigos
101+
- Itens e Inventário
102+
- Classes de Missões
103+
- Sistema de Combate
104+
- Logger
105+
106+
---
107+
108+
## **🔹 Camada 2 — Aplicação (Serviços / Controle)**
109+
110+
Coordena o funcionamento do jogo.
111+
112+
Inclui:
113+
114+
- `jogo.py` → gerencia estados e navegação
115+
- `repositorio_jogo.py` → salva/carrega jogo
116+
- `controle_missao.py` → fluxo de missões e combate
117+
118+
---
119+
120+
## **🔹 Camada 3 — Interface (UI)**
121+
122+
Toda a interface de texto:
123+
124+
- Menus
125+
- Entrada de usuário
126+
- Impressões no terminal
127+
128+
---
129+
130+
# 3. Padrões Adicionais Existentes
131+
132+
Além de MVC e camadas, o projeto utiliza outros padrões profissionais:
133+
134+
---
135+
136+
## **📌 Repository Pattern**
137+
138+
Arquivo:
139+
140+
<pre class="overflow-visible!" data-start="3296" data-end="3323"><div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span><span>repositorio_jogo.py
141+
</span></span></code></div></div></pre>
142+
143+
Funções:
144+
145+
- Serialização de objetos
146+
- Deserialização
147+
- Salvamento em JSON
148+
- Carregamento do progresso
149+
150+
Equivale a:
151+
152+
✔ Repository Pattern
153+
154+
✔ Data Mapper (transforma objetos ↔ JSON)
155+
156+
---
157+
158+
## **📌 Injeção de Dependências (Simplificada)**
159+
160+
Módulos recebem objetos do jogo como parâmetro, evitando dependências fixas e facilitando testes.
161+
162+
---
163+
164+
## **📌 Service Pattern (Implícito)**
165+
166+
O módulo:
167+
168+
<pre class="overflow-visible!" data-start="3726" data-end="3752"><div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span><span>controle_missao.py
169+
</span></span></code></div></div></pre>
170+
171+
age como um **serviço**, centralizando:
172+
173+
- Regras de combate
174+
- Turnos
175+
- Ações possíveis
176+
- Validação de escolhas
177+
- Interação personagem ↔ inimigo
178+
179+
---
180+
181+
# 4. Conclusão da Arquitetura
182+
183+
A arquitetura do sistema combina diferentes padrões modernos, resultando em um projeto modular, sustentável e apropriado para jogos via terminal.
184+
185+
### **Resumo Final**
186+
187+
| Parte | Responsabilidade | Exemplos |
188+
| -------------------------- | ------------------------- | ------------------------------- |
189+
| **Model (Domínio)** | Regras, estados e objetos | Personagem, Inimigo, Inventário |
190+
| **Controller (Aplicação)** | Fluxo do jogo | jogo.py, controle_missao |
191+
| **View (Interface)** | Interação usuário | prints, menus |
192+
| **Repository Pattern** | Salvamento | repositorio_jogo |
193+
| **Service-like Modules** | Combate/Missões | controle_missao |
194+
195+
Essa arquitetura permite fácil expansão futura: novas classes, novos inimigos, novos menus — tudo sem quebrar o funcionamento existente.

0 commit comments

Comments
 (0)