The Skyes – Jogo em C++ com ASCII Engine
Projeto desenvolvido para a disciplina de POO, explorando conceitos de encapsulamento, herança e polimorfismo em um jogo de aventura ASCII.
C++
POO
ASCII Engine
Contexto do Projeto
The Skyes foi desenvolvido durante a disciplina de Programação Orientada a Objetos. O objetivo era aplicar conceitos de POO em um projeto prático, resultando em um jogo em C++ onde cada entidade (herói, inimigo, chave, baú, moedas) é modelada como uma classe independente. Para trabalhar com as sprites e os objetos de jogo, foi utilzada a Engine criada pelo professor Victor Oliveira.
Conceitos de POO na Prática
- Encapsulamento: O herói controla internamente seus pontos de vida, usando métodos como
damage(),isAlive()egetHP(). - Herança: Todas as entidades herdam de
ObjetoDeJogo, aproveitando atributos e comportamentos comuns. - Polimorfismo: Objetos estáticos e animados compartilham a mesma interface de desenho
draw(), permitindo tratamento genérico no loop de renderização.
Exemplo de Encapsulamento (vida do herói)
if (hero.colideCom(inimigo) && podeLevarDano) {
hero.damage();
podeLevarDano = false;
danoCooldown = 60;
}
Soluções Implementadas
- Câmera dinâmica: sempre centraliza no herói, limitada aos limites do mapa.
- HUD: corações representam vidas e a barra mostra o HP atual.
- Objetos interativos: chave abre o baú, criando progressão.
- Inimigos patrulhando: IA simples que se move entre dois limites.
- Cooldown de dano: evita perda instantânea de todas as vidas.
Câmera acompanhando o herói
cameraLin = hero.getPosL() - CAM_HEIGHT / 2;
cameraCol = hero.getPosC() - CAM_WIDTH / 2;
cameraLin = std::clamp(cameraLin, 3, mapa.getAltura() - CAM_HEIGHT - 3);
cameraCol = std::clamp(cameraCol, 3, mapa.getLarguraMax() - CAM_WIDTH - 3);
camera.moveTo(cameraLin, cameraCol);
Resultados e Aprendizados
Com este projeto consegui consolidar:
- Estruturação de código em C++ orientado a objetos
- Uso de herança e polimorfismo para evitar duplicação de código
- Encapsulamento para garantir consistência dos objetos
- Aplicação prática de conceitos de jogos: câmera, colisão, HUD e progressão
Galeria do Projeto