Tênis Espacial: um Pong pelas estrelas
Um jogo estilo Pong ambientado no espaço, feito em Python com PyGame, com áudio sintetizado, IA com dificuldade progressiva e arquitetura modular.
O Início da Ideia
Nas horas vagas, me arrisco a desenvolver uns jogos com PyGame e JavaScript — é o espaço que uso pra sair um pouco da rotina do trabalho e experimentar ideias sem a pressão de um projeto "sério". O Tênis Espacial foi desenvolvido com PyGame e nasceu justamente dessa vontade de revisitar um clássico (o Pong) com uma roupagem diferente: em vez da tela preta com uma linha pontilhada no meio, um cenário espacial com estrelas em paralaxe, planetas e nebulosas passando ao fundo.
A ideia inicial era simples — duas raquetes, uma bola, quem fizer 7 pontos primeiro vence — mas queria que a experiência em si tivesse acabamento: efeitos de brilho neon nas raquetes e na bola, som e feedback visual em cada rebatida, e um adversário controlado por CPU que não fosse nem perfeito demais, nem óbvio demais.
Desenvolvimento
O jogo inteiro começou num único arquivo, que foi crescendo até chegar perto de 1000 linhas concentrando física, desenho, áudio, menu e configuração de janela. Num momento seguinte, refatorei todo esse código numa arquitetura modular, separando cada responsabilidade em seu próprio módulo — o que deixou o projeto muito mais fácil de manter e de evoluir.
Um dos pontos que mais gostei de resolver foi o áudio: o jogo não usa nenhum arquivo de som. Todos os efeitos sonoros são sintetizados matematicamente em tempo real com NumPy — ondas senoidais e quadradas geradas a partir de frequência, duração e um envelope de fade pra evitar estalos — e convertidas em áudio digital na hora, via PyGame.
Também implementei um sistema de resolução adaptável, que detecta o monitor do usuário e recalcula proporcionalmente todos os tamanhos do jogo (raquetes, bola, fontes, velocidades) em vez de simplesmente esticar a imagem — incluindo correção de DPI scaling no Windows e reposicionamento suave dos elementos quando a janela é redimensionada.
Principais pontos de engenharia do projeto:
- Arquitetura Modular: código dividido por responsabilidade (configuração, estado de janela/escala, áudio, entidades e lógica de jogo), a partir de um arquivo único inicial.
- Áudio Sintetizado: efeitos sonoros gerados matematicamente em tempo real com NumPy, sem nenhum arquivo de áudio externo.
- Resolução Adaptável: detecção do monitor e recálculo proporcional de todos os elementos do jogo, com correção de DPI no Windows.
- IA com Dificuldade Progressiva: adversário com 3 níveis de dificuldade e "erro de mira" proposital, além de velocidade que cresce sutilmente ao longo da partida.
- Feedback e Acabamento Visual: raquetes e bola com efeito neon em camadas, tremor de tela em rebatidas e pontos, e uma animação de "supernova" na tela de fim de jogo.
- Itens Especiais: power-ups que alteram o ritmo da partida (raquete maior, bola mais lenta, ponto em dobro).
- Distribuição: empacotamento em executável standalone com PyInstaller, incluindo ícone customizado, pra rodar sem precisar de Python instalado.
Resultado
O resultado é um Pong espacial completo, com identidade visual e sonora próprias, dois modos de jogo (1 jogador contra CPU ou 2 jogadores localmente) e uma base de código organizada o suficiente pra receber novas features sem dor de cabeça. Mais do que um jogo pronto, o Tênis Espacial virou também um exercício prático de arquitetura de software fora do contexto de trabalho — modularização, separação de responsabilidades e decisões de design que uso no dia a dia, aplicadas num projeto pequeno e divertido.
← Voltar para todos os projetos