

LaserPy é um jogo estilo puzzle desenvolvido inteiramente em Python, utilizando a biblioteca Pygame. O projeto nasceu da minha curiosidade pessoal de aplicar meus conhecimentos em programação e desenvolvimento em Python para criar uma experiência interativa e divertida.
O objetivo do jogo é guiar feixes de laser até seus respectivos alvos, manipulando espelhos no tabuleiro. O jogador deve pensar estrategicamente para atingir todos os alvos no menor número de movimentos possível.
Mecânica do jogo
Laser e alvos por cor: cada emissor de laser possui uma cor (vermelho, azul ou verde), e só ativa o alvo da mesma cor.
Espelhos com três tipos de comportamento:
- Verde: podem ser movidos e girados (duplo clique para girar, clique e arraste para mover).
- Vermelho: podem ser movidos, mas não girados.
- Cinza: são fixos, nem movem nem giram.
Reflexão: os lasers rebatem nos espelhos com base na direção e rotação. O comportamento segue um mapeamento de direção refletida.
Paredes: bloqueiam o feixe.
Sistema de avaliação
O número de movimentos é comparado com a meta de cada nível.
A pontuação por estrelas é dada conforme a eficiência:
- 3 estrelas: movimentos ideais
- 2 estrelas: até 2 movimentos a mais
- 1 estrela: acima disso
Cronômetro regressivo: o jogador tem 30 segundos por fase.
Animação de acerto: quando o laser atinge seu alvo, uma animação de expansão e partículas é exibida antes da conclusão do nível.
Sistema de níveis: cada nível possui layout, obstáculos, espelhos e lasers definidos em uma estrutura configurável.
Construindo novos níveis
A estrutura de níveis é baseada em um dicionário Python. Cada nível contém:
{ "lasers": [...],
"espelhos": [...],
"paredes": [...],
"movimentos_esperados": X }
Exemplo de espelho:
{"linha": 4, "coluna": 3, "rotacao": 0, "cor": "verde"}
Exemplo de laser:
{"emissor": (1, 2), "destino": (8, 9), "direcao": "direita", "cor": "vermelho"}
A rotação define a orientação do espelho e usa um dicionário chamado reflexoes que controla como o feixe muda de direção ao colidir.
Recursos e detalhes técnicos
- Interface gráfica com animações suaves
- Sistema de partículas para feedback visual
- Interface com HUD e popup de conclusão
- Tela inicial com botões (Iniciar, Sair)
- Arquitetura modular para carregamento de fases
- Código comentado e bem estruturado
- Estrutura de dados baseada em dicionários e classes
- Lógica de eventos com pygame.event.get()
- Animação com pygame.Surface e pygame.draw
- Avaliação de performance do jogador em tempo real
Capturas de tela e download




O código fonte do projeto está disponível para download abaixo.