|
| 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