Ir para conteúdo
Fórum Script Brasil
  • 0

Ordenação De Valores


Guest Darknnez

Pergunta

Guest Darknnez

Opa, e aí galera?

O negócio é seguinte:

Estou com uma grande dúvida mais especificamente em lógica de programação e não nescessariamente na linguagem Visual Basic.

Partindo do princípio, o que eu pretendo é construir um jogo do estilo manager, para colocar em prática o meu aprendizado em VB6, nada muito sério.

Mas bati de frente com um problema.

Não consigo ordenar valores.

Por exemplo:

No "jogo" teria um form com aproximadamente 20 Labels.

Cada Label.Caption retornaria um valor diferente definido por variáveis.

Vou tentar ser mais específico.

Seria um jogo manager de F1.

Para gerar a corrida, eu teria que definir qual piloto chegou em qual posição.

As posições são representadas por cada um dos Labels.

Então.... como eu faria?

Por que a única maneira com que eu sei trabalhar, seria a seguinte:

(suponham que são apenas 4 Labels e 4 variáveis, para não dar muito trabalho)

Dim a As Integer

Dim b As Integer

Dim c As Integer

Dim d As Integer

Private Sub Command1_Click()

Randomize

a = Int(20 * Rnd) + 1

b = Int(15 * Rnd) + 1

c = Int(10 * Rnd) + 1

d = Int(5 * Rnd) + 1

If (a > B) And (a > c) And (a > d) And (b >c) And (b > d) And (c > d) Then

lbl1.Caption = "valor1"

lbl2.Caption = "valor2"

lbl3.Caption = "valor3"

lbl4.Caption = "valor4"

Endif

E assim vai...

End Sub

Mas agora, imaginem se eu tivesse que fazer isso para cada uma das 20 variáveis que seriam necessárias (lembrando que no exemplo acima eu só usei 4 para facilitar).

Daria um trabalho imenso, certo?

Portanto, eu gostaria de saber se alguém poderia me ensinar aplicar algum algoritmo de ordenação no programa.

Mas que por favor, seja bastante específico de como aplicar, para que eu possa entender.

Espero que possam me ajudar.

Obrigado.

Darknnez

Link para o comentário
Compartilhar em outros sites

  • Respostas 299
  • Created
  • Última resposta

Top Posters For This Question

Top Posters For This Question

Posted Images

Posts Recomendados

  • 0

Tá quase lá, falta só acertar um detalhe.

Agora, no Form2, que é aonde está a pontuação, os pontos estão sendo ordenados corretamente, mas não com seus devidos nomes hahahaha.

Olha o código como que tá.

Form1:

Option Explicit

Private Sub cmdOK_Click()
Dim i As Integer
     Randomize
    
     For i = 0 To 19
        x(i).AI = Int(x(i).Chance * Rnd) + 1
     Next
    
     Colocação x(), 19
    
     x(19).Pontos = x(19).Pontos + 10
     x(18).Pontos = x(18).Pontos + 8
     x(17).Pontos = x(17).Pontos + 6
     x(16).Pontos = x(16).Pontos + 5
     x(15).Pontos = x(15).Pontos + 4
     x(14).Pontos = x(14).Pontos + 3
     x(13).Pontos = x(13).Pontos + 2
     x(12).Pontos = x(12).Pontos + 1
        
     lbl1.Caption = x(19).Nome
     lbl2.Caption = x(18).Nome
     lbl3.Caption = x(17).Nome
     lbl4.Caption = x(16).Nome
     lbl5.Caption = x(15).Nome
     lbl6.Caption = x(14).Nome
     lbl7.Caption = x(13).Nome
     lbl8.Caption = x(12).Nome
     lbl9.Caption = x(11).Nome
     lbl10.Caption = x(10).Nome
     lbl11.Caption = x(9).Nome
     lbl12.Caption = x(8).Nome
     lbl13.Caption = x(7).Nome
     lbl14.Caption = x(6).Nome
     lbl15.Caption = x(5).Nome
     lbl16.Caption = x(4).Nome
     lbl17.Caption = x(3).Nome
     lbl18.Caption = x(2).Nome
     lbl19.Caption = x(1).Nome
     lbl20.Caption = x(0).Nome
     
     cmdOK.Enabled = False
     cmdNext.Enabled = True
     
End Sub

Private Sub cmdNext_Click()
Form2.Show
Unload Me
End Sub

Private Sub Form_Load()
     x(0).Nome = "Alonso"
     x(0).Chance = 199
     x(1).Nome = "Hamilton"
     x(1).Chance = 200
     x(2).Nome = "Massa"
     x(2).Chance = 194
     x(3).Nome = "Raikkonen"
     x(3).Chance = 195
     x(4).Nome = "Heidfield"
     x(4).Chance = 93
     x(5).Nome = "Kubica"
     x(5).Chance = 97
     x(6).Nome = "Fisichella"
     x(6).Chance = 88
     x(7).Nome = "Kovalainen"
     x(7).Chance = 72
     x(8).Nome = "Rosberg"
     x(8).Chance = 75
     x(9).Nome = "Wurz"
     x(9).Chance = 52
     x(10).Nome = "Coulthard"
     x(10).Chance = 70
     x(11).Nome = "Webber"
     x(11).Chance = 72
     x(12).Nome = "Schumacher"
     x(12).Chance = 64
     x(13).Nome = "Trulli"
     x(13).Chance = 55
     x(14).Nome = "Button"
     x(14).Chance = 62
     x(15).Nome = "Barrichello"
     x(15).Chance = 57
     x(16).Nome = "Liuzzi"
     x(16).Chance = 59
     x(17).Nome = "Speed"
     x(17).Chance = 28
     x(18).Nome = "Sato"
     x(18).Chance = 32
     x(19).Nome = "Davidson"
     x(19).Chance = 35
End Sub
Form2
Option Explicit

Private Sub cmdNext_Click()
Form1.Show
Unload Me
End Sub

Private Sub Form_Load()

     Classificação x(), 19
     
     lbl1.Caption = x(19).Nome & " - " & x(19).Pontos
     lbl2.Caption = x(18).Nome & " - " & x(18).Pontos
     lbl3.Caption = x(17).Nome & " - " & x(17).Pontos
     lbl4.Caption = x(16).Nome & " - " & x(16).Pontos
     lbl5.Caption = x(15).Nome & " - " & x(15).Pontos
     lbl6.Caption = x(14).Nome & " - " & x(14).Pontos
     lbl7.Caption = x(13).Nome & " - " & x(13).Pontos
     lbl8.Caption = x(12).Nome & " - " & x(12).Pontos
     lbl9.Caption = x(11).Nome & " - " & x(11).Pontos
     lbl10.Caption = x(10).Nome & " - " & x(10).Pontos
     lbl11.Caption = x(9).Nome & " - " & x(9).Pontos
     lbl12.Caption = x(8).Nome & " - " & x(8).Pontos
     lbl13.Caption = x(7).Nome & " - " & x(7).Pontos
     lbl14.Caption = x(6).Nome & " - " & x(6).Pontos
     lbl15.Caption = x(5).Nome & " - " & x(5).Pontos
     lbl16.Caption = x(4).Nome & " - " & x(4).Pontos
     lbl17.Caption = x(3).Nome & " - " & x(3).Pontos
     lbl18.Caption = x(2).Nome & " - " & x(2).Pontos
     lbl19.Caption = x(1).Nome & " - " & x(1).Pontos
     lbl20.Caption = x(0).Nome & " - " & x(0).Pontos
End Sub
Module1:
Option Explicit
Public x(19) As piloto

Type piloto
    Nome As String
    AI As Integer
    Pontos As Integer
    Chance As Integer
End Type

Public Function Colocação(ByRef Vetor() As piloto, tam)
     Dim i, j
     Dim min
     Dim aux As piloto

     For i = 0 To tam
          min = i
          For j = i + 1 To tam
               If Vetor(j).AI < Vetor(min).AI Then min = j
          Next j

          aux = Vetor(i)
          Vetor(i) = Vetor(min)
          Vetor(min) = aux
     Next i
End Function

Public Function Classificação(ByRef Vetor() As piloto, tam)
     Dim i, j
     Dim min
     Dim aux As piloto

     For i = 0 To tam
          min = i
          For j = i + 1 To tam
               If Vetor(j).Pontos < Vetor(min).Pontos Then min = j
          Next j

          aux = Vetor(i)
          Vetor(i) = Vetor(min)
          Vetor(min) = aux
     Next i
End Function

Link para o comentário
Compartilhar em outros sites

  • 0

sabe qual o problema?? é que toda a vez que, no clique no botao no Form2, você chama o Form1, ele passa pelo Form_Load do Form1 de novo. assim, ele coloca os nomes dos pilotos de novo nos lugares. assim, por exemplo, se o massa ganhou a corrida, ele vai estar com 10 pontos e vai ser o indice 19 do array. assim que passar pelo Form_Load de novo, ele vai chegar aqui:

x(19).Nome = "Davidson"
     x(19).Chance = 35[/code]

e o numero 19 vai passar a ser o Davidson, e ele vai ter 10 pontos.

pra resolver isso, no seu module, crie uma sub main (Private Sub Main()). ela deve chaamar Main obrigatoriamente. ai tire tdo o que estiver no Form_Load do seu Form1 e cole na sub main. no final da sub main, digite Form1.Show.

ai clique no menu Project e selecione Properties (ultima opcao). na janelinha que abrir, na opcao Startup Object, selecione Sub Main. ai deve funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0

Mas possivelmente mais tarde, o form principal, ou seja, o primeiro a abrir quando rodar o programa, não seria o form onde "acontece" a corrida, o atual Form1.

Se eu fizer isso que você falou, isso não seria possível, ou estou falando bobagem?

Editado por Darknnez
Link para o comentário
Compartilhar em outros sites

  • 0

o Form1 é sim o Form onde acontece a corrida, e atualmente ele é o primeiro a carregar.

mas se você fizer a alteracao que eu falei, a primeira coisa a carregar vai ser a Sub Main. e como eu disse:

no final da sub main, digite Form1.Show.

depois de executada a Sub Main, ele vai chjamar o Form1. porque do jeito que tava, ele tentaria definir os nomes dos pilotos toda vez que o Form1 fosse aberto. do jeito que eu falei, isso so vai ser feito uma vez, o que é o certo pro programa funcionar direito.

Link para o comentário
Compartilhar em outros sites

  • 0

Não foi bem isso que eu quis dizer.

É que não era para o form onde acontece a corrida ser o primeiro a abrir.

Eu faria outros forms, e um deles seria o principal, tipo o menu principal.

Mas fazendo isso (e deu certo) sempre, obrigatoriamente, o primeiro form a abrir seria o form onde está a corrida, certo?

Link para o comentário
Compartilhar em outros sites

  • 0

caraio, nunca postei tanto num tópico só

Mas fazendo isso (e deu certo) sempre, obrigatoriamente, o primeiro form a abrir seria o form onde está a corrida, certo?

a ta, eu passei o código levando em conta que você queria que o primeiro form a abrir fosse o Form1, mas você alterar como quiser, chamar o Form que quiser primeiro (é so alterar a linha Form1.Show e por o Form que você quiser)

Link para o comentário
Compartilhar em outros sites

  • 0

Hahahahaha

Culpa minha você ter postado tanto!

E também por que eu fui tirando do tema do tópico desde o início, caso contrário, teria que fazer vários tópicos com dúvidas diferentes.

Ok, vou tentar aqui.

Valeu!

Hoje eu não vou poder ficar acordado até muito tarde, então vou mandar minha última pergunta.

Desse jeito que eu to fazendo o "jogo", tem como criar a opção de salvar, e carregar depois, assim como tem na maioria dos jogos?

Por exemplo:

Se eu tiver que fechar o "jogo" depois que já rodei algumas corridas, e a pontuação já está modificada, tem como eu salvar tudo do jeito que tá, e mais tarde quando quiser, carregar denovo da forma como parei, com as pontuações do mesmo jeito que estavam?

Link para o comentário
Compartilhar em outros sites

  • 0

bom, o esquema é você gravar num arquivo txt.

normalmente nos gravamos dados em banco de dados como o access, mas não costuma-se fazer assim com jogos, acredito que, entre otras coisas, pra facilitar a distribuicao.

otra opcao que existe é gravar no registro do windows, mas usa-se ele so pra gravar pequenas informacoes.

o melhor esquema no seu caso é mesmo do do txt (não precisa ser necessariamente txt, você pode por a extensao que quiser). logico que tem a possibilidade do cara entrar la e alterar o arquivo na mao, pra trapacear ou pra mudar o estado do jogo.

bom, pra mais informacoes sobre isso, da uma olhada nesse tópico, principalmente na explicacao do graymalkin:

http://scriptbrasil.com.br/forum/index.php?showtopic=99421

Link para o comentário
Compartilhar em outros sites

  • 0

Hmm... entendi.

Isso é bom, e me deu um alívio.

Por que eu pensava que teria que reformular todo o jogo para fazer com banco de dados.

Agora eu já sei que é possível salvar... só preciso saber como fazer isso!

:P

Mas de qualquer forma, não posso ficar muito mais tempo on, mais uma 30 min no máximo.

Então se você postar e eu não responder, é por que já desliguei o pc.

Valeu.

Link para o comentário
Compartilhar em outros sites

  • 0

Putz, eu já tava todo animado fazendo o jogo, colocando um meio para que o jogador possa contratar pilotos diferentes, motores, etc..

Diferentes pilotos, motores, níveis de chassis, mecânicos, etc, influenciariam na chance de vítoria de cada piloto, o que atualmente apenas a IA faz.

Só que eu me dei conta que para isso teria que fazer com que as outras equipes, controladas pelo computador, também possam contratar.

Existe algum método ou sistema comum, usados em outros jogos do mesmo estilo, que fazem isso que eu falei?

E se não existe, você tem alguma idéia de como eu poderia fazer isso?

Link para o comentário
Compartilhar em outros sites

  • 0

como os caras fazem não sei não, mas não me parece tão complicado.

é so você randomizar. tipo, vai comecar a corrida você pode fazer uma troca de equipamentos, dependendo da equipe cada um troca alguma coisa. não sei direito o que você tem em mente, mas acredito que seria tipo, quanto mais corridas a equipe ganha, mas dinheiro ela tem e mais ela pode gastar, certo??

ai você poderia por uma propriedade dinheiro pra equipe que fosse somando ao longo das corridas e aí vem a parte mais complicada que seria definir o que ela iria comprar. tipo você pode fazer os equipamentos com varios niveis. ai ela via o equipamento que ela tinha pior e comprava um novo, mas tipo, talvez você pudesse fazer ela esperar mais algumas corridas ate ter dinheiro pra comprar um melhor e etc.

veja ai o que você tem em mente pra fazer.

Link para o comentário
Compartilhar em outros sites

  • 0

o esquema é ir aous poucos. tipo comece so com um equipamento, tipo pneu sei la e depois vai adicionando mais.

cara você conhece orientacao a objeto?? porque acho que é o melhor jeito de se programar, principalmente jogos. tipo se você criasse classes pra equipe, piloto, etc, isso facilitaria bastante pra você, apesar de não ser obrigatorio.

mais detalhes nesse tutorial do macoratti: http://www.macoratti.net/vb_class.htm

Link para o comentário
Compartilhar em outros sites

  • 0

EDIT:

IGNORE, JÁ CONSEGUI CORRIGIR

Segui tua dica (menos a parte de criar classes, ainda).

Ta dando um probleminha idiota aqui, e eu não to descobrindo o motivo.

Eu fiz da seguinte forma:

a = numero aleatorio (1 ou 2)

Se a = 1 então

_____Se FinançasDaEquipeX > CustoDoMotor(número do motor atual + 1) então

__________MotorDaEquipeX = Motor(numero do motor atual + 1)

_____Fim Se

Fim Se

Basicamente...

Mas, não sei o por que, a EquipeX (no caso) compra, primeiramente um motor melhor, e depois, em vez de comprar outro motor melhor, mesmo tendo dinheiro suficiente, continua comprando o mesmo motor.

Upei o Project no RapidShare, para você entender melhor, se quiser:

http://rapidshare.com/files/46838774/ContratosTeste.rar.html

Mas se preferir, o código é esse:

Form1

Option Explicit

Private Sub cmdOK_Click()

For i = 0 To 1
    a(i) = Int(2 * Rnd) + 1
Next

If a(0) = 1 Then
    If xEquipe(0).finanças > xMotor(a(0) + 1).custo Then
        xEquipe(0).Motor = xMotor(a(0) + 1).nome
        xEquipe(0).finanças = xEquipe(0).finanças - xMotor(a(0) + 1).custo
        a(0) = a(0) + 1
        
        lblFinançasMcLaren.Caption = "Dinheiro: " & xEquipe(0).finanças
        lblMotorMcLaren.Caption = "Motor: " & xEquipe(0).Motor
        lblForçaMcLaren.Caption = "Força: " & xMotor(a(0)).potencia
    End If
End If

If a(1) = 1 Then
    If xEquipe(1).finanças > xMotor(a(1) + 1).custo Then
        xEquipe(1).Motor = xMotor(a(1) + 1).nome
        xEquipe(1).finanças = xEquipe(1).finanças - xMotor(a(1) + 1).custo
        a(1) = a(1) + 1
        
        lblFinançasFerrari.Caption = "Dinheiro: " & xEquipe(1).finanças
        lblMotorFerrari.Caption = "Motor: " & xEquipe(1).Motor
        lblForçaFerrari.Caption = "Força: " & xMotor(a(1)).potencia
    End If
End If

End Sub

Private Sub Form_Load()

a(0) = 0
a(1) = 0

xMotor(3).nome = "Ferrari"
xMotor(3).custo = 7000
xMotor(3).potencia = 25
xMotor(2).nome = "Mercedes"
xMotor(2).custo = 6500
xMotor(2).potencia = 23
xMotor(1).nome = "Renault"
xMotor(1).custo = 4000
xMotor(1).potencia = 19
xMotor(0).nome = "BMW"
xMotor(0).custo = 3000
xMotor(0).potencia = 16

xEquipe(0).nome = "McLaren"
xEquipe(0).finanças = 30000
xEquipe(0).Motor = xMotor(a(0)).nome
xEquipe(1).nome = "Ferrari"
xEquipe(1).finanças = 25000
xEquipe(1).Motor = xMotor(a(1)).nome

lblFinançasFerrari.Caption = "Dinheiro: " & xEquipe(1).finanças
lblMotorFerrari.Caption = "Motor: " & xEquipe(1).Motor
lblForçaFerrari.Caption = "Força: " & xMotor(a(1)).potencia
lblFinançasMcLaren.Caption = "Dinheiro: " & xEquipe(0).finanças
lblMotorMcLaren.Caption = "Motor: " & xEquipe(0).Motor
lblForçaMcLaren.Caption = "Força: " & xMotor(a(0)).potencia


End Sub
Module1
Option Explicit
Public xEquipe(1) As Equipe
Public xMotor(3) As Motor
Public i As Integer
Public a(1) As Variant
Public b(3) As Variant

Type Equipe
    nome As String
    finanças As Currency
    Motor As Variant
End Type

Type Motor
    nome As String
    custo As Currency
    potencia As Variant
End Type

Observação: esse é um Project separado do outro, no qual ocorre a corrida.

EDIT:

CONSEGUI CORRIGIR AQUI

Editado por Darknnez
Link para o comentário
Compartilhar em outros sites

  • 0

ponha um timer no seu form, com intervalo de 1 segundo (1000 milisegundos) e va somando uma variavel a cada vez. use ela pra acessar os indices, assim você mostra uma de cada vez.

pra mais detalhes de como usar o timer:

http://scriptbrasil.com.br/forum/index.php?showtopic=50047

http://scriptbrasil.com.br/forum/index.php?showtopic=77918

http://scriptbrasil.com.br/forum/index.php?showtopic=76882

Link para o comentário
Compartilhar em outros sites

  • 0

Hahahaha

Ficou legal pra caramba! xD

Fiz assim:

Private Sub Timer1_Timer()
tempo = tempo + 1
If tempo = 1 Then
     lbl20.Caption = xPiloto(0).nome
ElseIf tempo = 2 Then
     lbl19.Caption = xPiloto(1).nome
ElseIf tempo = 3 Then
     lbl18.Caption = xPiloto(2).nome
ElseIf tempo = 4 Then
     lbl17.Caption = xPiloto(3).nome
ElseIf tempo = 5 Then
     lbl16.Caption = xPiloto(4).nome
ElseIf tempo = 6 Then
     lbl15.Caption = xPiloto(5).nome
ElseIf tempo = 7 Then
     lbl14.Caption = xPiloto(6).nome
ElseIf tempo = 8 Then
     lbl13.Caption = xPiloto(7).nome
ElseIf tempo = 9 Then
     lbl12.Caption = xPiloto(8).nome
ElseIf tempo = 10 Then
     lbl11.Caption = xPiloto(9).nome
ElseIf tempo = 11 Then
     lbl10.Caption = xPiloto(10).nome
ElseIf tempo = 12 Then
     lbl9.Caption = xPiloto(11).nome
ElseIf tempo = 13 Then
     lbl8.Caption = xPiloto(12).nome
ElseIf tempo = 14 Then
     lbl7.Caption = xPiloto(13).nome
ElseIf tempo = 15 Then
     lbl6.Caption = xPiloto(14).nome
ElseIf tempo = 16 Then
     lbl5.Caption = xPiloto(15).nome
ElseIf tempo = 17 Then
     lbl4.Caption = xPiloto(16).nome
ElseIf tempo = 19 Then
     lbl3.Caption = xPiloto(17).nome
ElseIf tempo = 21 Then
     lbl2.Caption = xPiloto(18).nome
ElseIf tempo = 23 Then
     lbl1.Caption = xPiloto(19).nome
End If

Acho que não tem jeito de diminuir o número de linhas né?

Bem, outra perguntinha básica:

Agora eu queria fazer a pontuação da equipe.

Por exemplo, os pilotos da McLaren são Alonso e Hamilton.

Teria que somar as pontuações dos dois a cada corrida, e o resultado aparece em outro form, só que ordenadamente, da equipe com mais pontos até a equipe com menos pontos.

Como fazer?

Link para o comentário
Compartilhar em outros sites

  • 0

haha ou quando ce acabar tudo, manda pra mim aí

Acho que não tem jeito de diminuir o número de linhas né?

tem sim...

Private Sub Timer1_Timer()
tempo = tempo + 1
Me.Controls("lbl" & 20 - (tempo - 1)).Caption = xPiloto(tempo - 1).nome
If tempo = 20 Then
     Timer1.Enabled = False
End If[/code]

Bem, outra perguntinha básica:

Agora eu queria fazer a pontuação da equipe.

Por exemplo, os pilotos da McLaren são Alonso e Hamilton.

Teria que somar as pontuações dos dois a cada corrida, e o resultado aparece em outro form, só que ordenadamente, da equipe com mais pontos até a equipe com menos pontos.

Como fazer?

é ai que entrava o negocio da classe. ia ser bem mais simples, se tivesse uma classe equipe com uma propriedade que fosse uma colecao da classe piloto pra guardar todos os pilotos da equipe. e ai você tinha uma classe corrida e etc...

bom, mas você não tem que obrigatoriamente fazer isso, já que se fosse pra criar classe, você teria que jogar fora praticamente tdo que já fez. alem do que eu disse que seria bem mais simples pra ordenar, já que você faria isso numa unica linha. mas a estrutura das classes por tras disso pode dar muito trabalho (mas que vale a pena, já que ficaria tdo melhor organizado e mais facil de mexer).

pra poder ordenar nas equipes seguindo o que você já fez, crie uma matriz qualquer pra guardar o nome e os pontos da equipe, percorra o array dos pilotos com um For e va procurando as equipes e somando os pontos nesse array. ai depois você orderna usando aquela funcao de novo.

Link para o comentário
Compartilhar em outros sites

  • 0

Te passo sim, com certeza.

Mas acho que ainda tá um pouco longe de ficar pronto.

E se esse jogo for pra frente mesmo, eu achar que ficou legal e que da pra distribuir, seu nome vai pros créditos, já que praticamente fez o jogo também, e me ensinou a fazer o resto. hahahaha

Se quiser ir vendo como ta por enquanto, embora ainda esteja bem idiota, só pedir.

Por enquanto eu faço projects separados, como forma de testar o que vou aprendendo, e só depois aplicando no project central, que é o jogo.

Quanto a pontuação dos pilotos, acho que ordenar é o menor problema.

O problema é na hora de somar a pontuação dos pilotos mesmo, por que já que na corrida os valores de x(0), x(1), x(2), etc são mudados, eu não to conseguindo somar a pontuação dos dois mesmos pilotos sempre.

Editado por Darknnez
Link para o comentário
Compartilhar em outros sites

  • 0

hahah beleza...

faca tipo assim... onde você associa as equipes com os pilotos?? não sei se você já esta fazendo isso, mas você teria duas opcoes:

- por uma propriedade nova no type piloto pra guardar o nome da equipe.

- criar um tipo equipe que guarde um array de pilotos

a segunda opcao seria a mais "certa". mas de novo, o modo certo de fazer seria usando classes. já que usando tipos, você não tem como vincular os pilotos com a equipe. ai por mais que você tentasse deixar "bunitinho", uma hora ia aparecer um "buraco" que você teria que emendar com alguma gambiarra.

não que você esteja indo pelo caminho errado. só não é o mais orgazinado, o mais bunito...

mas tipo, levando em conta que você guarda o nome da equipe no piloto. você teria que ter um outro tipo pra guardar a pontuacao total da equipe. ai você percorria o array dos pilotos e ia somando os valores pra cada equipe. tipo assim:

For i = 0 To UBound(xPiloto)
     For j = 0 to UBound(xEquipe)
          If xEquipe(j).Nome = xPiloto(i).Equipe Then
               xEquipe(j).Pontos = xEquipe(j).Pontos + xPiloto(i).Pontos
               Exit For
          End If
     Next
Next[/code]

EDITADO:

opa, no codigo acima, passei o nome do piloto onde era pra passar a equipe, agora ta corrigido.

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.




  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...