Organize seus jogos de vôlei de praia de forma justa e rápida.
O Beach Volley Balancer é um aplicativo desenvolvido em Flutter para resolver o problema clássico das "panelinhas" ou times desequilibrados nos jogos de vôlei. Com ele, você cadastra os jogadores, define o nível de habilidade e o algoritmo gera times equilibrados automaticamente.
- 📋 Importação Inteligente: Cole sua lista de confirmados direto do WhatsApp (suporta formatos como
1. Nome,2 - Nome, etc.). - ⭐ Nivelamento de Habilidade: Classifique os jogadores de 1 a 5 estrelas.
- ⚖️ Algoritmo de Equilíbrio Avançado: Utiliza distribuição por soma mínima de habilidades com balanceamento dinâmico, garantindo que todos os times tenham tamanhos iguais (ou diferença máxima de 1 jogador) e médias de habilidade o mais próximas possível.
- ⚙️ Configuração Flexível: Escolha o tamanho dos times (duplas, trios, quartetos, etc.).
- 📱 Interface Intuitiva: Design limpo com tema "Beach" e feedback visual.
O projeto foi refatorado para seguir boas práticas de Engenharia de Software, separando responsabilidades e facilitando a manutenção.
lib/
├── controllers/ # Gerência de estado (ChangeNotifier)
├── models/ # Modelos de dados
├── screens/ # Telas principais (Home, Result)
├── services/ # Lógica de negócios (Matemática, Regex)
├── theme/ # Estilos e cores (AppColors)
└── widgets/ # Componentes visuais reutilizáveis (Cards, Dialogs)- Service Layer: A lógica pesada (cálculo de times e limpeza de texto) foi isolada em
TeamBalancerServiceeTextParserService. - Modularização de UI: Componentização da Home e da Tela de Resultados para evitar "God Widgets".
- Clean Code: Nomes descritivos e métodos com responsabilidade única.
O algoritmo de balanceamento segue 3 etapas:
-
Distribuição Inicial: Os jogadores são ordenados por habilidade (do melhor ao pior) e distribuídos sempre para o time com a menor soma de habilidades atual, garantindo equilíbrio matemático desde o início.
-
Balanceamento de Tamanhos: Após a distribuição inicial, o algoritmo ajusta os times para garantir que todos tenham o mesmo número de jogadores (ou diferença máxima de 1).
-
Otimização Final: Para cada ajuste de tamanho, o algoritmo escolhe estrategicamente qual jogador transferir entre times, minimizando a diferença entre as médias de habilidade finais.
Resultado: Times com médias de habilidade muito próximas e quantidades equilibradas de jogadores.
- Flutter SDK instalado.
- Android Studio ou VS Code configurados.
- Clone o repositório:
git clone https://github.com/seu-usuario/beach-volley-balancer.git
cd beach-volley-balancer- Instale as dependências:
flutter pub get- Execute o App:
flutter runEste projeto já está configurado para assinatura de APK no Linux/Windows.
-
Certifique-se de ter o arquivo
upload-keystore.jkse o arquivoandroid/key.propertiesconfigurados (estes arquivos não são versionados por segurança). -
Gere o build:
flutter build apk --release- O arquivo estará em:
build/app/outputs/flutter-apk/app-release.apk.
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.
- Faça um Fork do projeto.
- Crie uma Branch para sua Feature (
git checkout -b feature/MinhaFeature). - Faça o Commit (
git commit -m 'Adicionando MinhaFeature'). - Faça o Push (
git push origin feature/MinhaFeature). - Abra um Pull Request.
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.