Sistema completo de gerenciamento para uma arena de batalhas de tanques, permitindo cadastro de tanques, agendamento de partidas, simulação de batalhas PvE/PvP, ranking de desempenho e relatórios detalhados.
- Função: Controlador principal do sistema com menu interativo
- Conexões:
CadastroService
- para gerenciar tanquesAgendamentoService
- para partidasBattleSimulator
- para simulaçõesRankingService
- para estatísticas
- Responsabilidade: CRUD completo de tanques
- Conexões:
TanqueDAO
→Conexao
(banco de dados)Tanque
e suas subclasses (TanqueLeve
,TanqueMedio
,TanquePesado
)AgendamentoService
- fornece lista de tanques para partidas
- Função: Gerenciar conexão com MySQL
- Configuração:
jdbc:mysql://localhost:3306/tanques
- Subclasses:
TanqueLeve
,TanqueMedio
,TanquePesado
- Composição:
- Lista de
Arma
(Canhao
,Metralhadora
,Missil
) - Atributos específicos por classe
- Lista de
- Função: Implementação concreta para persistência no banco
- Subclasses:
Canhao
,Metralhadora
,Missil
- Polimorfismo:
calcularDano()
- implementação específica por armacalcularRecarga()
- varia por classe do tanque
- Responsabilidade: Agendar e gerenciar partidas
- Conexões:
Partida
- entidade principalCadastroService
- para obter tanques disponíveis- Verifica conflitos de horário e arena
- Atributos: modo, data/hora, arena, lista de tanques, eventos
- Regras: Limites por modo (1v1=2, 3v3=6, 5v5=10 tanques)
- Funcionalidade: Simular batalhas entre tanques
- Inteligência: IA para tanques controlados por computador
- Conexões:
Tanque
- para ataques e defesasRankingService
- atualiza estatísticas
- Responsabilidade: Coletar e exibir métricas de desempenho
- Conexões:
EstatisticasTanque
- armazena dados individuaisCadastroService
- para buscar tanques- Reset automático semanal/mensal
- Métricas: Abates, dano, precisão, vitórias
- Cálculos: Score baseado em múltiplos fatores
- Função: Exportar dados dos tanques para arquivo CSV
- Local: Salva na pasta Documents do usuário
- Limite de 12 tanques simultâneos
- Três classes com características únicas
- Persistência em banco MySQL
- Múltiplos modos (Treino, 1v1, 3v3, 5v5)
- Verificação de conflitos de horário
- Três arenas com características diferentes
- Cálculo de dano considerando:
- Tipo de arma e munição
- Setor do alvo (frontal/lateral/traseiro)
- Terreno e distância
- Classe do tanque
- Score baseado em múltiplos fatores
- Rankings gerais e por modo
- Timeline de eventos
- Relatórios de eficiência
- Exportação CSV dos tanques
- Mapas de calor de horários
- Análise de disponibilidade da frota
Conexao.java
gerencia conexãoTanqueDAO.java
implementa operações CRUD- Persistência completa dos tanques
ExportadorCSV.java
usando FileWriter- Exporta para Documents do usuário
- JUnit - testes unitários
- OpenCSV - exportação CSV
- MySQL Connector - conexão com banco
CREATE DATABASE tanques;
-- A tabela é criada automaticamente pelo sistema
- Configurar MySQL na porta 3306
- Criar database
tanques
- Executar
Main.java
- Seguir menu interativo
Tanque
←TanqueLeve
,TanqueMedio
,TanquePesado
Arma
←Canhao
,Metralhadora
,Missil
calcularDano()
ecalcularRecarga()
implementados diferentemente em cada arma- Comportamento varia por classe do tanque
- Atributos privados com getters/setters
- Lógica de negócio encapsulada em serviços
- Tanques compostos por múltiplas armas
- Partidas compostas por múltiplos tanques
📋 Pré-requisitos Java 17 ou superior
MySQL 8.0 ou superior
Maven 3.6 ou superior
🎮 Como Usar Cadastre tanques através do menu principal
Agende partidas selecionando modo, data e participantes
Simule batalhas entre tanques cadastrados
Acompanhe rankings e estatísticas de desempenho
Exporte relatórios em formato CSV
🐛 Solução de Problemas Problema: Erro de conexão com MySQL
Verifique se o MySQL está rodando na porta 3306
Confirme as credenciais em Conexao.java
Problema: Limite de tanques excedido
O sistema permite no máximo 12 tanques cadastrados simultaneamente
Problema: Conflito de agendamento
Verifique se a arena ou tanque já estão ocupados no horário selecionado
👨💻 Contribuição Desenvolvido por:
Rafael Albuquerque
Daniel Henrique
Matheus Lima
Cauê Milhomen