FELIPE WINSCHDesenvolvedor Full Stack
Voltar aos projetos

Jogo 2D · Programação em C++

Space++

Jogo espacial em C++ e SFML com nave, projéteis e dois tipos de meteoros. Explora orientação a objetos, colisões e o ciclo de atualização e desenho.

Protótipo

  • C++
  • SFML 2.6
  • Make

Minha contribuição

Projeto de felpzw: o histórico público consultado atribui os commits ao perfil. A lógica própria está em main.cpp e Game.hpp; as bibliotecas SFML incluídas são dependências de terceiros.

Problema

Implementar um jogo espacial pequeno para aplicar classes, herança, entrada por teclado e detecção de colisões em C++.

Contexto e escopo

O README apresenta o projeto como Space++; o repositório se chama Space-. O código abre uma janela 800 × 600, usa WASD para movimentação e J para disparo, acompanha vidas e imprime a pontuação ao encerrar. A análise é do código, sem execução do jogo nesta revisão.

Arquitetura

main.cpp processa eventos, cria meteoros, verifica interseções entre retângulos dos sprites e atualiza a cena. Game.hpp define Player, Bullet e uma classe abstrata Meteor com variantes rápidas e lentas.

SFML fornece janela, sprites e texturas. O Makefile compila com g++ e vincula as bibliotecas gráficas, de janela e de sistema incluídas em src/lib.

  1. Eventos SFML · movimento e disparo
  2. Entidades · atualização e colisões
  3. Renderização · sprites, vidas e pontuação
Loop do protótipo; a pontuação final é exibida no terminal.

Decisões e trade-offs

A herança diferencia movimento e resistência dos meteoros. Colisões por retângulos mantêm a implementação curta, mas não seguem o contorno visual dos sprites.

O loop limita a taxa a 30 quadros por segundo e usa deslocamentos fixos por atualização. Isso simplifica o protótipo, mas não representa medição de desempenho nem movimento independente do tempo. A análise desses trade-offs deriva do código.

Testes e evidências

Não foram encontrados testes automatizados no código próprio do jogo. Uma validação manual deve cobrir colisões, remoção de entidades, limites da janela e encerramento por perda de vidas. Esse roteiro não foi executado nesta revisão.

Limitações

O código usa ponteiros e gerenciamento manual de memória; Meteor é polimórfica, mas seu destrutor não é virtual. A animação recarrega texturas de arquivo durante o loop, e o build depende de bibliotecas Linux incluídas no repositório.

As texturas são carregadas por caminhos relativos: execute a partir da raiz do projeto, onde ficam as imagens. O recorte não oferece um instalador ou validação de portabilidade entre sistemas.

Explorar o projeto

Comece por main.cpp e depois Game.hpp para acompanhar o ciclo das entidades. Clone a revisão indicada e confira o Makefile com um compilador C++ e SFML compatíveis.

O README orienta make e ./main. Execute a partir da raiz para que as texturas sejam encontradas. Nenhum binário pré-compilado do repositório foi executado nesta revisão.

make
./main

Fontes conferidas em 2026-09-27 · Conteúdo v1 · Revisão ed594a6.