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

sem mudar uma linha no seu código, olha como foi a minha segunda corrida:

post-9195-1186376855_thumb.jpg

post-9195-1186376863_thumb.jpg

Alonso - 10 Pontos

Hamilton - 6 Pontos

Resultado: McLaren 16 Pontos

ou seja, ta certo

Raikonen - 8 pontos

Massa - 5 Pontos

Resultado: Ferrari 13 Pontos

ou seja, ta certo também.

qual o problema que tinha pra você??

outra coisa, pra facilitar pra você, em vez de gravar o nome da equipe pra cada piloto, grave o numero do indice dela no array. assim, pra acessar você não precisa daquele For todo, é so passar o numero no indice.

quanto ao negocio das pecas, presta atencao que você define o nome dos pneus, por exemplo, depois de definir qual pneu cada equipe usa. assim você poe o nome do pneu pra equipe, mas o nome esta vazio já que os pneus so vao receber nome la no final.

alias, o melhor a se fazer, como eu disse acima é gravar o numero do pneu pra equipe, em vez do nome.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, eu juro por Deus que aqui ta dando errado.

Não sei se é macumba ou não, sei lá o motivo.

Mas eu te garanto que aqui, a partir da segunda corrida, a pontuação ta toda errada.

Agora mesmo eu rodei o programa, e na segunda corrida, o Alonso chegou em primeiro e o Hamilton em segundo, e a pontuação da equipe estava igual a 13.

Nessa mesma corrida, o Raikkonen chegou em terceiro e o Massa em quarto, e a soma da equipe estava igual a 8.

Então, sinceramente... não da pra entender o por que.

Você tem certeza que fez duas corridas em uma única vez que rodou o programa?

Bem, de qualquer forma, valeu...

Link para o comentário
Compartilhar em outros sites

  • 0

a entendi o que acontece. no form da corrida você ordena os pilotos certinho pela ordem de chegada. ai no proximo form você mostra a pontuacao. e você ordena pela pontuacao. mas na verdade você ta ordenando pela pontuacao acumulada (propriedade pontos) e não pela pontuacao dessa ultima corrida. porque se você olhar pelo form da corrida (aquele que eu postei o print) vai ver que a pontuacao das equipes ta certa. mas se você olha pelo segundo formulario, vai parecer que ela esta errada, mas na verdade é esse formulario que esta errado.

pensa bem, a primeira corrida acabou com Massa em terceiro (6 pontos) e Alonso em primeiro (10 pontos).

a segunda corrida comeca e você chama a sub Colocacao. ai ele ordena por AI. ai o Massa é o primero (+ 10 = 16) e o Alonso é o segundo (+ 8 = 18).

beleza, so que ai assim que o outro formulario é aberto, você chama a sub Classificacao. ai o que acontece, o Alonso tem mais pontos que o Massa no total e fica na frente dele. e você diz ainda que o Alonso recebeu 10 pontos nessa ultima corrida. mas na verdade quem acabaou a corrida na frente foi o Massa e os 10 pontos são deles.

então você mostra uma pontuacao diferente do que cada um recebeu. ou seja diferente do que foi somado pra cada equipe.

e o erro na esta na hora de somar pra equipe e sim na hora de mostrar a pontuacaos dos pilotos ao final da corrida.

Link para o comentário
Compartilhar em outros sites

  • 0

a partir da segunda corrida (se não funcionar pra segunda, tente a proxima), olha o formulario da corrida. aquele que tem os labels coloridos. presta atencao na ordem que vai aparecer la. clica no botao pra ir pro proximo. agora olha a ordem que aparece nesse e compara com a ordem do anterior. agora você deve entender.

Link para o comentário
Compartilhar em outros sites

  • 0

Não consigo de jeito nenhum!

Eu mechi em alguma coisa no projeto ontem, que quando eu abri hoje não tava nem somando mais a pontuação da equipe na última corrida.

Não sei o que eu fiz.

Mas to perdendo a paciência com isso já.

To frustrado mesmo.

Não sei se mecho mais com isso hoje.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu não sei no que foi em que mechi, mas agora não ta somando mais.

Antes tava somando, mas o resultado dava errado, certo?

Agora o resultado só aparece = 0.

To te mandando o projeto por MP.

EDIT:

Cara, se você postar aí e eu não responder, é por que já saí.

Tenho aula 7:20, e por isso tenho que acordar 6:30.

Eu vou esperar mais um pouco, e depois sair.

Link para o comentário
Compartilhar em outros sites

  • 0

enato, é aquilo de novo. não ta somando agora porque você inicialiaza os pilotos antes das equipes. ai você faz:

xPiloto(0).nome = "Alonso"
    xPiloto(0).chance = 199
    xPiloto(0).Equipe = xEquipe(0).nome[/code]

quando ele passa ai, o nome da xEquipe(0) ainda ta vazio. então o nome da equipe no xPiloto vai ficar vazio e ele não vai saber de que equipe o piloto é. lembra do que eu disse sobre guardar os indices em vez dos nomes??

Link para o comentário
Compartilhar em outros sites

  • 0

a linha que você tem que tirar é:

Colocação xPiloto(), 19

que ta no Form_Load do PontosCorrida.

você so deve usar essa linha quando quiser ordenar pela pontuacao acumulada.

EDITADO:

a linha que ordena a equipe é pra deixar sim

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

  • 0

mano nem eu sei como faz isso...

tipo, sei sim, varias vezes já usei scrollbar em projetos, mas faco as coisas do meu jeito. tipo não sei como os outros fazem.

basicamente, no evento change da scrollbar você muda o top do objeto de acordo cum o value da scrollbar. ai você tem que por tipo uma formula que mude o objeto pra posicao certa. veja ai se consegue, qualquer coisa poste.

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...