Estudo de Padrões de Projeto: Game of Life
Um estudo em Python e Pygame que aplica padrões de projeto, princípios SOLID e limites arquiteturais mais claros ao Game of Life de Conway.
Tecnologias
- Python
- Pygame
- NumPy
- pytest
- Docker
Visão geral
O objetivo não foi apenas fazer o jogo funcionar, mas estudar como uma pequena aplicação em Pygame poderia ser organizada com responsabilidades mais claras. A implementação original permanece disponível como referência, enquanto a aplicação refatorada é organizada em um pacote dedicado.
Padrões implementados
A refatoração usa quatro padrões para tornar explícitas as responsabilidades e dependências.
- Strategy: alterna entre as regras de evolução Conway e HighLife sem alterar o motor do jogo.
- State: modela os modos de simulação Edição, Execução e Pausa sem espalhar lógica condicional pela aplicação.
- Publisher/Subscriber: permite que eventos da simulação notifiquem assinantes de resumo e logging por meio de uma interface.
- Factory: centraliza a criação de objetos de estado sem acoplar diretamente os estados concretos entre si.
Arquitetura e aprendizados
A arquitetura mantém a entrada e a renderização do Pygame na camada de interface, enquanto o motor, a grade, as estratégias e os assinantes permanecem independentes da UI. Isso apoia limites orientados aos princípios SOLID e torna o sistema mais fácil de compreender.
Este é um repositório de estudo, não uma implementação definitiva. As escolhas orientadas a padrões são intencionalmente visíveis para que seus trade-offs possam ser analisados; a mesma aplicação poderia usar padrões diferentes ou um design mais simples.