Este repositório contém as entregas da disciplina MC322, documentando o desenvolvimento dos projetos e registrando as implementações realizadas ao longo dos cinco laboratórios.
Implementação inicial de um Simulador de Robôs, composta por três arquivos principais:
- Robo.java – Define a classe
Robo, suas propriedades e métodos. - Ambiente.java – Implementa a classe
Ambiente, responsável por suas características e comportamentos. - Main.java – Classe principal que cria e manipula os objetos conforme as regras do enunciado.
Expansão do simulador de robôs, com novos tipos e funcionalidades avançadas.
- Robo.java – Classe base para todos os robôs, com métodos de movimentação e detecção de obstáculos.
- RoboTerrestre.java – Especialização de
Robopara robôs terrestres, com restrições de velocidade máxima. - RoboAereo.java – Especialização de
Robopara robôs aéreos, com controle de altitude. - RoboSubterraneo.java – Especialização de
RoboAereopara robôs subterrâneos, com altitude mínima. - RoboLaser.java – Especialização de
RoboTerrestrecom capacidade de disparar lasers. - RoboGerador.java – Robô que cria outros robôs no ambiente.
- RoboCorredor.java – Especialização de
RoboTerrestrecom restrições de velocidade mínima e máxima. - Ambiente.java – Define o ambiente tridimensional e gerencia os robôs ativos.
- Main.java – Executa a simulação, criando robôs, movimentando-os e verificando interações.
Aprimoramento do simulador com sensores e obstáculos, introduzindo novos relacionamentos entre classes.
- Ambiente.java – Atualizado para gerenciar obstáculos e robôs com
ArrayList. - Obstaculo.java – Representa obstáculos com tipo enumerado.
- TipoObstaculo.java – Enum que define tipos de obstáculos (PEDRA, ARVORE, BURACO, LAGO).
- Sensor.java – Classe base para sensores.
- SensorIluminacao.java – Sensor para monitorar iluminação.
- SensorPressao.java – Sensor para monitorar pressão.
- Main.java – Atualizado com menu interativo para controle dos robôs.
- Robo.java – Classe base para todos os robôs.
- RoboTerrestre.java – Especialização de
Robopara robôs terrestres. - RoboAereo.java – Especialização de
Robopara robôs aéreos. - RoboSubterraneo.java – Especialização de
RoboAereopara robôs subterrâneos. - RoboLaser.java – Robô terrestre com capacidade de disparar lasers.
- RoboGerador.java – Robô que cria outros robôs no ambiente.
- RoboCorredor.java – Robô terrestre com restrições de velocidade mínima e máxima.
-
Obstáculos no Ambiente:
- Diferentes tipos de obstáculos com propriedades específicas.
- Verificação de colisões.
- Métodos para adicionar/remover obstáculos.
-
Sensores:
- Sistema de sensores agregados aos robôs.
- Sensores de Iluminação e Pressão.
- Métodos para monitorar o ambiente.
-
Menu Interativo:
- Visualização do status de robôs e ambiente.
- Controle de movimentos básicos.
- Relatórios dos sensores.
- Criação e destruição de robôs e obstáculos.
-
Melhorias nas Classes Existentes:
- Robôs atualizados para considerar obstáculos.
- Ambiente com métodos para verificação de limites.
- Relacionamentos entre classes implementados (agregação, composição).
Aprimoramento do simulador de robôs com funcionalidades avançadas de comunicação entre robôs, geração de novos robôs e tratamento de exceções personalizadas.
- Ambiente.java – Gerencia o ambiente 3D, os robôs, obstáculos e o mapa.
- CentralComunicacao.java – Central que gerencia o histórico de mensagens entre os robôs.
- Main.java – Classe principal com menu interativo e controle do simulador.
- Obstaculo.java – Representa obstáculos no ambiente.
- Robo.java – Classe base para todos os robôs, com movimentos básicos e sensores.
- RoboAereo.java – Robô aéreo com controle de altitude.
- RoboCorredor.java – Robô corredor com limites de velocidade mínima e máxima.
- RoboGerador.java – Robô gerador que cria outros robôs e se comunica.
- RoboLaser.java – Robô com capacidade de disparar laser.
- RoboSubterraneo.java – Robô subterrâneo com profundidade mínima.
- RoboTerrestre.java – Robô terrestre com limite de velocidade.
- Sensor.java – Classe base para sensores.
- SensorIluminacao.java – Sensor específico para monitorar iluminação.
- SensorPressao.java – Sensor específico para monitorar pressão.
- Comunicavel.java – Define métodos para comunicação entre robôs.
- Corredor.java – Define comportamento para robôs corredores.
- Entidade.java – Interface comum para todas as entidades no ambiente.
- Gerador.java – Define métodos para gerar diferentes tipos de robôs.
- Laser.java – Define comportamento para robôs com laser.
- Sensoreavel.java – Define métodos para uso de sensores.
- BateriaSensorException.java – Bateria do sensor esgotada.
- ColisaoException.java – Detecção de colisão iminente.
- ErroComunicacaoException.java – Falha na comunicação entre robôs.
- ForaDosLimitesException.java – Movimento além dos limites do ambiente.
- RoboDesligadoException.java – Operação tentada com robô desligado.
- VelocidadeMinimaException.java – Velocidade abaixo do mínimo para robô corredor.
- TipoEntidade.java – Tipos de entidades no ambiente (
ROBO,OBSTACULO, etc.). - TipoObstaculo.java – Tipos de obstáculos (
PEDRA,ARVORE,BURACO, etc.).
-
Menu Principal:
- Listar todos os robôs
- Listar robôs por tipo (terrestres, aéreos, etc.)
- Listar robôs por estado (ligados/desligados)
- Selecionar robô para controle detalhado
- Visualizar mapa do ambiente
- Listar mensagens de comunicação
- Sair do sistema
-
Menu do Robô Selecionado:
- Visualizar status completo
- Executar tarefa principal (gerar robôs, disparar laser, correr)
- Controlar movimento (frente, trás, direita, esquerda, subir, descer)
- Comunicar com outro robô
- Acionar sensores
- Ligar/Desligar robô
- Voltar ao menu principal
Aprimoramento do simulador com sistema de missões, componentes modulares e agentes inteligentes.
- AgenteInteligente.java - Classe abstrata para robôs com capacidade de executar missões
- Missao.java - Interface para definição de missões
- MissaoMonitorarIluminacao.java - Missão para monitorar níveis de iluminação
- MissaoMonitorarLugar.java - Missão para investigar locais específicos
- ModuloComunicacao.java - Componente para gerenciar comunicação entre robôs
- GerenciadorSensores.java - Componente para gerenciar operações com sensores
- ControleMovimento.java - Componente para gerenciar movimentos dos robôs
- Logger.java - Sistema de registro de eventos e ações
-
Sistema de Missões:
- Robôs podem receber e executar missões específicas
- Missões de monitoramento ambiental e investigação
- Agentes inteligentes especializados em execução de missões
-
Arquitetura Modular:
- ControleMovimento: encapsula toda lógica de movimento
- GerenciadorSensores: gerencia operações com sensores
- ModuloComunicacao: trata comunicação entre robôs
- Logger: registra todas as ações importantes no sistema
-
Novas Funcionalidades no Menu:
- Definir missões para robôs específicos
- Executar missões atribuídas
- Visualizar histórico de ações (log)
- Controle mais granular dos componentes
-
Melhorias Gerais:
- Tratamento refinado de exceções
- Sistema de missões
- Geração de relatórios de missões
MC322
└── src
├── Lab01
├── Lab02
├── Lab03
├── Lab04
└── Lab05
├── ambiente
│ ├── Ambiente.java
│ ├── Entidade.java
│ ├── Obstaculo.java
│ ├── TipoEntidade.java
│ └── TipoObstaculo.java
│
├── arquivos
│ ├── DiretrizesLab05
│ ├── log.txt
│ └── Logger.java
│
├── comunicacao
│ ├── CentralComunicacao.java
│ ├── Comunicavel.java
│ └── ModuloComunicacao.java
│
├── exception
│ ├── BateriaSensorException.java
│ ├── ColisaoException.java
│ ├── ErroComunicacaoException.java
│ ├── ForaDosLimitesException.java
│ ├── RoboDesligadoException.java
│ ├── VelocidadeMaximaException.java
│ └── VelocidadeMinimaException.java
│
├── main
│ └── Main.java
│
├── missao
│ ├── Missao.java
│ ├── MissaoMonitorarIluminacao.java
│ └── MissaoMonitorarLugar.java
│
├── robo
│ ├── AgenteInteligente.java
│ ├── ControleMovimento.java
│ ├── Corredor.java
│ ├── Gerador.java
│ ├── Laser.java
│ ├── Robo.java
│ ├── RoboAereo.java
│ ├── RoboCorredor.java
│ ├── RoboGerador.java
│ ├── RoboLaser.java
│ ├── RoboSubterraneo.java
│ └── RoboTerrestre.java
│
└── sensores
├── GerenciadorSensores.java
├── Sensor.java
├── Sensoravel.java
├── SensorIluminacao.java
└── SensorPressao.java
-
Chegue até a pasta
cd src/Lab05 -
Compile:
javac -d bin $(find . -name "*.java") -
Execute:
java -cp bin main.Main
