-
Notifications
You must be signed in to change notification settings - Fork 2
Arquitetura do Projeto
A arquitetura deste projeto foi planejada para ser modular, escalável e fácil de manter, seguindo princípios de design de software como a Separação de Responsabilidades (SoC). O código-fonte está organizado em pacotes, cada um com um propósito bem definido.
A estrutura principal do código reside em src/main/java/com/guiccr/rpg/ e está dividida nos seguintes pacotes:
Este pacote contém as classes que representam as entidades do domínio, ou seja, os "substantivos" do sistema. Elas armazenam dados e comportamentos relacionados.
-
Personagem.java: Classe abstrata base para todas as entidades combatentes, com atributos comuns como vida, força e defesa. -
Heroi.java: Herda dePersonageme representa o avatar do jogador, incluindo lógica de experiência, inventário e habilidades. -
Monstro.java: Herda dePersonageme representa os inimigos controlados pelo sistema. -
Item.java,ItemGenerico.java,Equipavel.java,Espada.java,PocaoVida.java: Modelam os diferentes tipos de itens que um herói pode possuir e usar. -
Inventario.java: Gerencia a coleção de itens de um herói.
Este pacote é responsável pela camada de persistência. Ele abstrai a comunicação com o banco de dados e implementa o padrão Repository de forma direta (sem interfaces).
-
RepositorioDeHerois.java: Métodos para operações CRUD (Create, Read, Update, Delete) na tabelaheroisdo banco SQLite. Toda manipulação de dados persistentes de heróis passa por esta classe.
Este pacote contém a lógica de negócio da aplicação, ou seja, os "verbos" do sistema. As classes de serviço orquestram as interações entre entidades do model e a camada de repository para executar as principais funcionalidades do jogo.
-
Batalha.java: Gerencia o fluxo de combate por turnos, cálculo de dano, ações dos personagens e determina o vencedor.
Na raiz, estão as classes que coordenam a execução e a interface com o usuário.
-
Main.java: Ponto de entrada da aplicação (public static void main). Inicializa o menu principal. -
MenuPrincipal.java: Controla o fluxo de navegação do jogador fora do combate, permitindo criar novo jogo, carregar existente ou sair. -
GeradorDeNomes.java,ConsoleColors.java: Classes utilitárias para funcionalidades de apoio.
- O padrão Repository é aplicado de forma direta, sem uso de interfaces ou abstrações avançadas.
- Algumas lógicas de negócio (como manipulação de inventário ou efeitos de itens) também podem estar presentes nas entidades do pacote
model. - A arquitetura facilita a manutenção, testes e futuras expansões do sistema.