O aplicativo "Pelo Churrasco F.C. - Sorteio de Times" foi desenvolvido para facilitar a organização de partidas de futebol, permitindo a seleção de jogadores, o sorteio equilibrado de times e a gestão administrativa das partidas e jogadores.
- Lista de Jogadores:
- Exibe uma lista de jogadores base pré-cadastrados com seus respectivos nomes e notas (de 1 a 5).
- Exibe uma lista separada de 6 jogadores "Avulsos", também com nomes e notas (inicialmente nota 3, mas editável no modo admin).
- As listas são ordenadas por nota (decrescente) e depois por nome.
- Seleção para Sorteio:
- O usuário pode selecionar de 10 a 20 jogadores (entre base e avulsos) para participar do sorteio.
- A seleção é feita clicando em qualquer lugar da área do jogador (nome, nota ou checkbox).
- Um contador exibe o número de jogadores selecionados.
- Se o número máximo de jogadores (20) for atingido, os jogadores não selecionados ficam visualmente desabilitados.
- Botão "Sortear Times":
- Fica habilitado apenas quando o número de jogadores selecionados está entre 10 e 20 (inclusive) e o cooldown (para usuários normais) não está ativo.
- Ao clicar, realiza o sorteio e navega para a tela de Times Sorteados.
- Algoritmo de Equilíbrio:
- O sistema sorteia até 4 times (Verde, Vermelho, Cinza, Amarelo).
- O objetivo principal é equilibrar a média de notas entre os times formados.
- Regra de Composição 1: Se o número de jogadores selecionados não for múltiplo de 5 (tamanho ideal do time), o sistema forma quantos times de 5 jogadores forem possíveis, e o último time é composto pelos jogadores restantes (ex: com 14 jogadores, teremos dois times de 5 e um time de 4).
- Regra de Composição 2 (Crítica): O algoritmo impede que dois jogadores com nota 1 caiam no mesmo time. Da mesma forma, impede que dois jogadores com nota 5 caiam no mesmo time. Esta regra tem alta prioridade para garantir o equilíbrio e evitar times muito fracos ou muito fortes em extremos.
- O sistema realiza múltiplas tentativas e otimizações para encontrar a combinação de times com a menor diferença possível entre a maior e a menor média.
- Visualização:
- Exibe os times formados, cada um com sua cor característica, nome do time (Ex: "Time Verde"), a média de nota do time e a lista de jogadores com seus nomes e notas individuais.
- Os jogadores dentro de cada time são listados ordenados por nota (decrescente).
- Botão "Sortear Novos Times": Permite realizar um novo sorteio com os mesmos jogadores selecionados anteriormente (sujeito a cooldown para usuários normais).
- Para usuários não administradores, há um cooldown de 30 minutos entre a realização de sorteios.
- Um contador regressivo é exibido na tela, indicando o tempo restante para o próximo sorteio.
- O timestamp do último sorteio é armazenado no
localStoragedo navegador para persistir o cooldown entre sessões.
- Acesso:
- Um botão "Acesso Restrito" (ou "Admin Ativado") fica visível no cabeçalho.
- Ao clicar, um campo para inserir o código de administrador é exibido.
- O código de administrador é:
raphaeljogador. - Ao inserir o código correto, o modo administrador é ativado.
- Importante: O modo administrador sempre inicia desativado ao carregar a página. O estado de admin não persiste no
localStoragepara garantir a segurança.
- Privilégios do Administrador:
- Sem Cooldown: O cooldown para sorteios é desabilitado.
- Edição de Nomes e Notas dos Jogadores:
- Na tela de seleção de jogadores, o administrador pode clicar no nome ou na nota de qualquer jogador (base ou avulso) para torná-los editáveis.
- As alterações são salvas ao perder o foco do campo de edição (onBlur).
- As notas devem ser um número entre 1 e 5.
- As alterações em nomes e notas são persistidas no
localStoragee refletidas em sorteios futuros e na edição de times.
- Botão "Voltar para Seleção":
- Na tela de "Times Sorteados", um botão "Voltar para Seleção" é exibido para o administrador, permitindo retornar à tela de seleção de jogadores sem perder o estado de admin.
- Edição Manual de Times Sorteados:
- Na tela de "Times Sorteados", cada time possui um botão "Editar Time".
- Ao clicar, um modal de edição é aberto, permitindo:
- Visualizar Jogadores no Time: Lista os jogadores atualmente no time que está sendo editado, com a opção de "Remover" cada um.
- Adicionar Jogador: Mostra uma lista de jogadores disponíveis para adicionar ao time. Esta lista inclui:
- Jogadores que foram originalmente selecionados para o sorteio mas não estão em nenhum time (status "Sem Time").
- Jogadores que estão em outros times (mostrando em qual time estão).
- Jogadores que não foram selecionados para o sorteio inicial (status "Não Selecionado" ou "Ausente").
- Jogadores Avulsos.
- Transferência Automática: Se um jogador que já está em outro time for adicionado, ele é automaticamente removido do time de origem e adicionado ao time atual.
- Limite de Jogadores: A edição respeita o limite de 5 jogadores por time ao adicionar.
- Recálculo de Média: A média do time editado é recalculada e exibida no modal.
- Ao "Concluir Edição", as alterações são salvas e refletidas na tela de times sorteados.
- Layout Responsivo: O aplicativo é desenhado para ser funcional em desktops e dispositivos móveis.
- Design: Utiliza Tailwind CSS para um visual moderno e limpo, com cores temáticas para cada time e feedback visual para interações.
- Cabeçalho: Exibe o logo e nome do time, e o botão de acesso ao modo administrador.
- Rodapé: Contém informações de direitos autorais e desenvolvedor.
localStoragedo Navegador:ultimoSorteioTimestampPeloChurrasco: Armazena o timestamp do último sorteio para gerenciar o cooldown.listaCompletaJogadoresPeloChurrasco: Armazena a lista de todos os jogadores, incluindo nomes e notas que possam ter sido editados pelo administrador. Isso garante que as edições persistam entre as sessões do navegador.- O estado de
isAdminnão é salvo nolocalStoragepara garantir que o modo admin sempre inicie desativado.
- Acessa o aplicativo.
- Seleciona entre 10 e 20 jogadores.
- Clica em "Sortear Times".
- Visualiza os times sorteados.
- Se desejar novo sorteio, aguarda o cooldown de 30 minutos ou realiza um novo sorteio se o tempo já passou.
- Acessa o aplicativo.
- Clica em "Acesso Restrito" e insere o código
raphaeljogador. - (Opcional) Edita nomes ou notas dos jogadores na tela de seleção.
- Seleciona entre 10 e 20 jogadores.
- Clica em "Sortear Times" (sem cooldown).
- Visualiza os times sorteados.
- (Opcional) Clica em "Editar Time" para ajustar manualmente a composição dos times.
- Remove ou adiciona jogadores conforme necessário.
- Conclui a edição.
- (Opcional) Clica em "Voltar para Seleção" para retornar à tela de seleção de jogadores e, por exemplo, alterar os jogadores selecionados para um novo sorteio.
- (Opcional) Clica em "Sortear Novos Times" para um novo sorteio com os mesmos jogadores selecionados ou com uma nova seleção se retornou à tela anterior.