Skip to content

murillous/Beach_Volley_Balancer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏐 Beach Volley Balancer

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.

✨ Funcionalidades

  • 📋 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.

🛠️ Arquitetura do Projeto

O projeto foi refatorado para seguir boas práticas de Engenharia de Software, separando responsabilidades e facilitando a manutenção.

Estrutura de Pastas

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)

Padrões Utilizados

  • Service Layer: A lógica pesada (cálculo de times e limpeza de texto) foi isolada em TeamBalancerService e TextParserService.
  • 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.

🧮 Como Funciona o Algoritmo

O algoritmo de balanceamento segue 3 etapas:

  1. 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.

  2. 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).

  3. 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.

🚀 Como Rodar o Projeto

Pré-requisitos

  • Flutter SDK instalado.
  • Android Studio ou VS Code configurados.

Passos

  1. Clone o repositório:
git clone https://github.com/seu-usuario/beach-volley-balancer.git
cd beach-volley-balancer
  1. Instale as dependências:
flutter pub get
  1. Execute o App:
flutter run

📦 Gerando APK para Android (Release)

Este projeto já está configurado para assinatura de APK no Linux/Windows.

  1. Certifique-se de ter o arquivo upload-keystore.jks e o arquivo android/key.properties configurados (estes arquivos não são versionados por segurança).

  2. Gere o build:

flutter build apk --release
  1. O arquivo estará em: build/app/outputs/flutter-apk/app-release.apk.

🤝 Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.

  1. Faça um Fork do projeto.
  2. Crie uma Branch para sua Feature (git checkout -b feature/MinhaFeature).
  3. Faça o Commit (git commit -m 'Adicionando MinhaFeature').
  4. Faça o Push (git push origin feature/MinhaFeature).
  5. Abra um Pull Request.

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors