CAMPEONATO EM VB6
Olá amigos do VBMANIA, estou tentando desenvolver um formulario para criar automaticamente tabelas de campeonatos de Futebol, mas não sei como fazer para o sistema elaborar os confrontos. A minha ideia é informar ao sistema o nome dos times e ele criar uma tabela a partir desta informação, Por ex:
a x b
c x d
---------
d x a
b x c
---------
d x b
a x c
me ajudem please...
a x b
c x d
---------
d x a
b x c
---------
d x b
a x c
me ajudem please...
Crie uma tabela com os times(simples, código e descrição), e uma para as partidas, com campos indicando os times que vão jogar, onde vc vai colocar os códigos dos times, também campos para o resultado da partida(quantos gols faz o primeiro time e quantos fez o segundo), outro campo que vai ter o código do time vencedor ou null caso seja empate
Interessante o tópico, pois eu estive pensando em um programinha para Torneio de Tenis de Mesa que jogo representando minha cidade. Acho que seguiria o mesmo raciocinio apenas com a diferença de gols para pontos em cada set disputado. Mas com uma lista qualquer para mostrar todos os set's disputados.
Alguem tem alguma idéia para gerar automaticamente o cruzamento de jogos, como se fosse um sorteio de jogos na segunda fase. Cruza sempre o primeiro de uma chave, com o segundo de outra. Para sortear e cruzar os jogadores voces tem alguma idéia?
Alguem tem alguma idéia para gerar automaticamente o cruzamento de jogos, como se fosse um sorteio de jogos na segunda fase. Cruza sempre o primeiro de uma chave, com o segundo de outra. Para sortear e cruzar os jogadores voces tem alguma idéia?
Primeiro crie uma outra tabela que vai ter duas colunas, uma com o código da chave e outra com o jogador/time. Assim, vc vai saber em que chave cada jogador/time está. Com isso pode fazer os sorteios que quiser.
Então... Já criei todas as tabelas e as telas de cadastro (times, jogos, etc.), agora eu quero desenvolver uma tela onde possa lançar o nome dos times e o programa faça os confrontos entre eles como no exemplo abaixo:
Times: a, b, c, d
1° Rodada
a x b
c x d
---------
2° Rodada
d x a
b x c
---------
3° Rodada
d x b
a x c
Tentei fazer um loop mas não deu certo, pois não sei em que basear este comando para que realize-se os confrontos sem se repetir.
Times: a, b, c, d
1° Rodada
a x b
c x d
---------
2° Rodada
d x a
b x c
---------
3° Rodada
d x b
a x c
Tentei fazer um loop mas não deu certo, pois não sei em que basear este comando para que realize-se os confrontos sem se repetir.
Olha, eu não sei usar muito bem as funções aleatórias. Não sei se elas dão algum suporte para sorteios sem reposição. Neste exemplo, tive que criar uma função que verifica no Array a ocorrência do valor sorteado. Se não ocorre, insiro no Array, se não, sorteio novamente. Rode aà e adapte conforme sua necessidade:
1 Form e 1 botão para rodar o exemplo.
1 Form e 1 botão para rodar o exemplo.
Function FoiSorteado(ByRef v As Variant, ByVal Valor As String) As Boolean
Dim i As Byte
For i = 0 To UBound(v)
If v(i) = Valor Then FoiSorteado = True: Exit Function
Next
End Function
Private Sub Command1_Click()
Const iTeto As Byte = 10
Dim i As Byte
Dim v(0 To iTeto) As String
Dim iValor As Byte
Dim iTotal As Byte
While iTotal < iTeto
Randomize iTotal
iValor = Int(((iTeto) * Rnd()) + 1)
If Not FoiSorteado(v, iValor) Then
v(iTotal) = iValor
iTotal = iTotal + 1
End If
Wend
[ô]lendo o vetor
Dim sMsg As String
For i = 0 To iTeto - 1
sMsg = sMsg & v(i) & [Ô],[Ô]
Next
MsgBox sMsg
End Sub
Com o uso de 2 comandos FOR aninhados você elabora os confrontos sem repetição. A parte complicada vai ser coloca-los na ordem dentro das rodadas.
Private Sub Command1_Click()
Dim times(1 To 4) As String
times(1) = [Ô]a[Ô]
times(2) = [Ô]b[Ô]
times(3) = [Ô]c[Ô]
times(4) = [Ô]d[Ô]
For i = 1 To UBound(times) - 1
For j = i + 1 To UBound(times)
List1.AddItem times(i) & [Ô] x [Ô] & times(j)
Next j
Next i
Private Sub Command1_Click()
Dim times(1 To 4) As String
times(1) = [Ô]a[Ô]
times(2) = [Ô]b[Ô]
times(3) = [Ô]c[Ô]
times(4) = [Ô]d[Ô]
For i = 1 To UBound(times) - 1
For j = i + 1 To UBound(times)
List1.AddItem times(i) & [Ô] x [Ô] & times(j)
Next j
Next i
é mais rápido e fácil montar uma solução com planilha eletrônica, do que desenvolver um projeto em VB ou VBA.
Quantos campeonatos você ou seu cliente vão organizar, para compensar o trabalho de desenvolver um software? São questões que devem ser levadas em conta.
Quantos campeonatos você ou seu cliente vão organizar, para compensar o trabalho de desenvolver um software? São questões que devem ser levadas em conta.
Caro Federhen, já tenho algumas planilhas eletronicas e inclusive as uso nos campeonatos de futebol de mesa que faço em minha casa com alguns amigos. Também já possuo um BD com front end em VB6 que uso para armazenar os campeonatos realizados. No intuito de [Ô]juntar[Ô] tudo em um só aplicativo, é que estou tentando montar este novo form. Fico agradecido pela dica do amigo e feliz por meu tópico chamar a vsa. atenção e de todos que estão visitando-o. Assim que finalizar este projeto, tenho a intenção de posta-lo aqui no VBMANIA para que possa ajudar outros colegas desenvolvedores.
Tópico encerrado , respostas não são mais permitidas