Skip to content

Latest commit

 

History

105 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto: Jogo Plataforma 2D (SFML)

Integrantes

Resumo

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).

O que foi feito

  • 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.

Tecnologias

  • Linguagem: C++17
  • Biblioteca utilizada: SFML
  • Ambiente de desenvolvimento: Visual Studio 2022

Como compilar e executar

  1. Certificar-se de ter SFML instalado e que as bibliotecas/headers estejam acessíveis ao projeto.
  2. Abrir a solução/projeto no Visual Studio 2022.
  3. Selecionar o projeto correto como projeto de inicialização.
  4. Construir a solução usando Build > Build Solution.
  5. 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.png etc.).
  • Em caso de falha ao carregar texturas, o código lança exceção com mensagem simples.

Estrutura principal do código

  • 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)

Jogabilidade / Controles

  • 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 e carregamento

  • Salvamento: entidades escrevem linhas de texto em arquivo.
  • Carregamento: Fase::carregarSave lê 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.

Boas práticas e observações técnicas

  • 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 .

About

Jogo feito em SFML para a disciplina de técnicas de programação na Universidade Tecnológica Federal do Paraná

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages