- Rafael Fulgêncio Rosário da Cruz
- Rodrigo Dub Meneghello - https://github.com/DubNiP
Jogo de plataforma 2D desenvolvido em C++ usando SFML. Implementa fases com inimigos (Golem, MagoNegro, Sapo), obstáculos (espinhos, teias, plataformas móveis) e um jogador com mecânicas de pular, mover, atacar e salvar/carregar estado da fase. Arquitetura orientada a objetos com padrões de projeto: Template Method (Fase), Observer/State (fluxo do jogo) e Prototype (criação de blocos).
- Mecânicas de personagem jogável (movimento, ataque, vida, invencibilidade).
- Inimigos com IA básica (perseguir jogador, movimento aleatório, pulo periódico).
- Sistema de fases com cenas, obstáculos, plataformas e chefoes.
- Sistema de colisões e gerenciamento de entidades.
- Salvamento e carregamento de estado da fase (formato de texto).
- Integração com SFML para renderização, entrada e áudio.
- Linguagem: C++17
- Biblioteca utilizada: SFML
- Ambiente de desenvolvimento: Visual Studio 2022
- Certificar-se de ter SFML instalado e que as bibliotecas/headers estejam acessíveis ao projeto.
- Abrir a solução/projeto no Visual Studio 2022.
- Selecionar o projeto correto como projeto de inicialização.
- Construir a solução usando Build > Build Solution.
- Executar com Debug > Start Debugging.
Observações práticas:
- Os assets (texturas) esperam o diretório
Textures/relativo ao executável; crie essa pasta na mesma pasta do .exe e inclua as imagens usadas (por exemplo:Golem_idle1.png,background 2.pngetc.). - Em caso de falha ao carregar texturas, o código lança exceção com mensagem simples.
- SFML/
- Entidades: Personagem, Inimigo, Golem, Mago, MagoNegro, Sapo, Projetil
- Obstáculos: Bloco, Plataforma, Espinho, Teia, Saida, Alavanca
- Fases: Fase (base), FasePrimeira, FaseSegunda
- Gerenciadores: Gerenciador_Grafico, Gerenciador_Colisoes, Gerenciador_Eventos
- Estados do jogo: MenuPrincipalState, JogandoState, PauseState, GameOverState
- Utilitários: ListaEntidades, Observer/Subject (para comunicação)
- Movimento horizontal: teclas definidas no Gerenciador_Eventos (configuráveis no código).
- Pular e atacar: eventos mapeados no mesmo gerenciador.
- Pausar: tecla Esc (abre o menu de pausa); durante a execução, pressionar Esc retorna ao menu.
- Salvamento: entidades escrevem linhas de texto em arquivo.
- Carregamento:
Fase::carregarSavelê o arquivo texto e recria as entidades com seus estados. - Observação: formato de texto livre, atenção a sincronização de versões do formato ao alterar campos.
- O fluxo principal é single-thread; cuidado ao alterar I/O síncrono.
- Alguns recursos lançam exceção simples; considerar tratamento mais robusto para build de produção.
- Padrões usados: Template Method (criação de fases), Observer, State (gestão de estados do jogo), Prototype (clonagem de blocos), Singleton e Iterator .