Ir para conteúdo
Fórum Script Brasil

Darknnez

Membros
  • Total de itens

    216
  • Registro em

  • Última visita

Tudo que Darknnez postou

  1. Moro em Belo Horizonte/MG. Por enquanto PUC e UFMG são as melhores opções, mas talvez mais tarde eu faça em outro estado. E pelo o que eu saiba, o curso da UFMG também é um dos melhores do país, o 2º melhor se não me engano. Eu queria te pedir um favor. Tem como me mandar o link com o projeto todo da última MP que eu te mandei? To viajando e consegui achar uma rede aqui perto, por isso nem sei se vou conseguir entrar sempre. haha Por isso também nem testei o código do seu último post. É isso aí. Valeu. EDIT: Será que pode dar algum erro se eu continuar trabalhando no projeto, só que no VB2008?
  2. É isso mesmo!Entendi. Vai simplificar bastante o código. Valeu. Só uma coisa que não ficou muito claro. No seu post passado, você me aconselhou colocar Exit For da seguinte maneira: For j = 0 To UBound(xEquipe) If xEquipe(10 - j).nome <> xJogador.equipe Then For i = 0 To UBound(xPiloto) For v = 0 To 21 If i - v >= 0 Then If xEquipe(10 - j).situação >= xPiloto(i - v).situação Then If xEquipe(10 - j).contrato(1) = False Then ... ... Else Exit For 'POE AQUI End If End If End If Next If xEquipe(10 - j).contrato(0) Then Exit For 'POE AQUI Next End If Next[/codebox] Mas não entendi direito que If é esse no final. E não sei também, agora, se tenho que colocar um Exit For aqui: [codebox] For j = 0 To UBound(xEquipe) If xEquipe(10 - j).nome <> xJogador.equipe Then For i = 0 To UBound(xPiloto) For v = 0 To 21 If i - v >= 0 Then If xEquipe(10 - j).situação >= xPiloto(i - v).situação Then If xEquipe(10 - j).contrato(1) = False Then ... ... Exit For 'AQUI TAMBÈM? Else Exit For 'POE AQUI End If End If End If Next If xEquipe(10 - j).contrato(0) Then Exit For 'POE AQUI Next End If Next Isso mesmo que eu vou fazer. Prestei pra Ciência da Computação.
  3. Olha, não sei se to pensando direito, mas se eu fizesse apenas um único For (com o i), não conseguiria fazer com que as equipes começassem 'verificando' os pilotos do mais forte até o mais fraco, por que o índice teria valor igual. Deu pra entender? Assim as equipes vão tentar contratar os pilotos mais fortes primeiro, e se não conseguirem, passam ao próximo piloto, mais fraco que o anterior. A propriedade situação é para evitar que as equipes mais pobres contratem pilotos com salário muito alto, para que na temporada seguinte não vão à falência. Ou seja, as equipes só contratam pilotos que tiverem em situação igual ou inferior à ela. O problema agora é que eu tenho que corrigir esse erro que tá dando, e não sei muito bem como. Será que se eu fizer com que as equipes que não conseguiram contratar um piloto, contratem qualquer piloto que ainda não tiver sido contratado, verificando do mais fraco ao mais forte, vai dar certo? Acho que sim. Bem, vou tentar aqui. Valeu mesmo kuroi. A PUC também é particular, como as outras que eu passei, a diferença é que o curso dela é muito melhor que a das outras, sendo pior apenas que o curso da UFMG. Feliz Natal atrasado, e um bom ano novo pra você. Até mais.
  4. O foda é que essas 3 que eu passei são particulares. Então não vale a pena entrar em uma delas, ficar um ano inteiro pagando caro, pra no final do ano mudar para UFMG ou PUC. Quanto ao jogo, vou te passar o projeto todo por MP. E sim, cada equipe, ao final da temporada, deve contratar exatamente dois pilotos, nem mais nem menos. E não é isso que está acontecendo. E obviamente, todos os pilotos tem que ser contratados, não pode sobrar nenhum. Se for testar, é só não escolher nenhuma equipe para treinar no início do jogo, e roda-lo com velocidade 'Muito Rápido', pra facilitar as coisas. Se quiser também, pode reduzir o número de etapas totais de uma temporada. Assim não precisa rodar 18 corridas pra ver o erro: If etapa = 18 Then Só tem que reduzir esse número, que está no form PontosCorridaEquipe. Ah! E pra ver o erro, quando acabar a temporada, no Menu de Equipes, é só clicar em 'Classificação de Pilotos', e aí vai ver que a Label de cada piloto está colorida de acordo com as cores da equipe. Portanto, se tem mais de duas Labels com cores idênticas, incluindo o ForeColor, é por que deu erro. Deu pra entender? É isso aí, vou te passar o projeto. Valeu.
  5. Fiz prova pra 5 vestibulares, passei em 3. Infelizmente não passei exatamente nos dois que queria passar. Na UFMG, minha primeira opção, eu fiz nota acima da nota de corte, mas como tirei 1 em química, acabei não passando. E no dia da prova da PUC, segunda opção, eu passei muito mal de nervosismo e calor, e não fui bem. Ano que vem to estudando denovo hahaha. Mas bem, valeu pela ajuda. Deu mais ou menos certo. Para você entender melhor o que eu fiz, vou explicar desde o início. Primeiro eu defini a condição financeira de cada equipe e o custo de cada piloto: For j = 0 To UBound(xEquipe) If xEquipe(j).finanças <= 1000 Then xEquipe(j).situação = 2 ElseIf xEquipe(j).finanças <= 3000 Then xEquipe(j).situação = 3 ElseIf xEquipe(j).finanças <= 5000 Then xEquipe(j).situação = 4 ElseIf xEquipe(j).finanças <= 7000 Then xEquipe(j).situação = 5 ElseIf xEquipe(j).finanças <= 10000 Then xEquipe(j).situação = 6 ElseIf xEquipe(j).finanças <= 15000 Then xEquipe(j).situação = 7 ElseIf xEquipe(j).finanças <= 20000 Then xEquipe(j).situação = 8 ElseIf xEquipe(j).finanças > 20000 Then xEquipe(j).situação = 9 End If Next For i = 0 To UBound(xPiloto) If xPiloto(i).salário = 100 Then xPiloto(i).situação = 0 ElseIf xPiloto(i).salário = 150 Then xPiloto(i).situação = 1 ElseIf xPiloto(i).salário = 200 Then xPiloto(i).situação = 2 ElseIf xPiloto(i).salário = 250 Then xPiloto(i).situação = 3 ElseIf xPiloto(i).salário = 300 Then xPiloto(i).situação = 4 ElseIf xPiloto(i).salário = 350 Then xPiloto(i).situação = 5 ElseIf xPiloto(i).salário = 400 Then xPiloto(i).situação = 6 ElseIf xPiloto(i).salário = 450 Then xPiloto(i).situação = 7 ElseIf xPiloto(i).salário = 500 Then xPiloto(i).situação = 8 End If Next [/codebox] Assim eu posso comparar as duas e fazer com que equipes pobres não contratem pilotos caros. Aí fiz a lógica de acordo com a sua dica, que de fato simplifica muito as coisas. [code]For j = 0 To UBound(xEquipe) If xEquipe(j).nome <> xJogador.equipe Then For i = 0 To UBound(xPiloto) For v = 0 To 21 If i - v >= 0 Then If xEquipe(j).situação >= xPiloto(i - v).situação Then If xEquipe(j).contrato(0) = False Then If xPiloto(i - v).contrato = False Then xEquipe(j).piloto(0) = xPiloto(i - v).nome xPiloto(i - v).equipe = xEquipe(j).nome xEquipe(j).contrato(0) = True xPiloto(i - v).contrato = True Exit For End If End If End If End If Next Next End If Next For j = 0 To UBound(xEquipe) If xEquipe(j).nome <> xJogador.equipe Then For i = 0 To UBound(xPiloto) For v = 0 To 21 If i - v >= 0 Then If xEquipe(j).situação >= xPiloto(i - v).situação Then If xEquipe(j).contrato(1) = False Then If xPiloto(i - v).contrato = False Then xEquipe(j).piloto(1) = xPiloto(i - v).nome xPiloto(i - v).equipe = xEquipe(j).nome xEquipe(j).contrato(1) = True xPiloto(i - v).contrato = True Exit For End If End If End If End If Next Next End If Next[/code] Mas por algum motivo, depois que acabou a temporada (que é quando o código é lido), e no começo da outra, apareceu quie a equipe McLaren contratou 3 pilotos enquanto a equipe Honda contratou apenas 1. Foi o único erro aparente, e eu não achei o motivo. O que tem de errado no código? Se quiser, te passo o projeto todo. Valeu, mais uma vez. Até mais. Edit: Testando aqui mais uma vez, não deu nada errado. Dessa vez cada equipe contratou 2 pilotos. Não tenho idéia do que pode ter dado errado da primeira vez, não mudei nada no código. Edit2: Em alguns casos, a equipe Ferrari, por exemplo, contratou 4 pilotos, a McLaren 3 pilotos, numa mesma temporada, enquanto outras equipes contrataram apenas 1 piloto.
  6. Opa! E aí kuroi, tudo bem? Quanto tempo... Bem, acabaram as aulas e provas de vestibular, e retomei o projeto. Não alterei nada de importância ainda, apenas algumas coisas simples no design pra deixar o ambiente do jogo mais agradável. E com certeza ficou muito melhor agora. Mas bem, queria recomeçar fazendo com que as equipes controladas pelo computador possam contratar pilotos diferentes após o término da temporada. Para isso, seguiria a mesma lógica que fiz para que pudessem contratar motores, pneus e combustíveis diferentes, com algumas pequenas alterações. Se lembra? '_______________________MOTOR_______________________ Randomize For j = 0 To UBound(xEquipe) h(j) = Int(1 * Rnd) + 1 Next For j = 0 To UBound(xEquipe) If xEquipe(j).nome = xJogador.equipe Then h(j) = 0 ElseIf xEquipe(j).nome <> xJogador.equipe Then b = 7 - nMotor(j) If (nMotor(j)) = 7 Then If xEquipe(j).finanças >= xMotor(7).custo Then xEquipe(j).Motor = xMotor(7).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(7).custo nMotor(j) = 7 h(j) = 0 Else h(j) = 1 End If ElseIf (nMotor(j)) = 0 Then If xEquipe(j).finanças > xMotor(0).custo Then h(j) = 1 Else xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 h(j) = 0 End If End If If xEquipe(j).finanças > 0 Then If h(j) = 1 Then If xEquipe(j).finanças > xMotor(nMotor(j)).custo Then a = Int(b * Rnd) + 1 If xEquipe(j).finanças >= xMotor(nMotor(j) + a).custo Then xEquipe(j).Motor = xMotor(nMotor(j) + a).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) + a).custo nMotor(j) = nMotor(j) + a Else xEquipe(j).Motor = xMotor(nMotor(j)).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j)).custo nMotor(j) = nMotor(j) End If ElseIf xEquipe(j).finanças < xMotor(nMotor(j)).custo Then If xEquipe(j).finanças >= xMotor(nMotor(j) - 1).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 1).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 1).custo nMotor(j) = nMotor(j) - 1 Else If (nMotor(j) - 2) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 2).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 2).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 2).custo nMotor(j) = nMotor(j) - 2 Else If (nMotor(j) - 3) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 3).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 3).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 3).custo nMotor(j) = nMotor(j) - 3 Else If (nMotor(j) - 4) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 4).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 4).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 4).custo nMotor(j) = nMotor(j) - 4 Else If (nMotor(j) - 5) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 5).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 5).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 5).custo nMotor(j) = nMotor(j) - 5 Else If (nMotor(j) - 6) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 6).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 6).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 6).custo nMotor(j) = nMotor(j) - 6 Else xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 End If End If End If End If End If End If End If End If ElseIf xEquipe(j).finanças <= 0 Then xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 End If End If Next [/codebox] A diferença, é que, enquanto existem apenas 8 motores, 4 combustíveis e 3 pneus diferentes, existem 22 pilotos no total, o que tornaria esse código muito longo e complicado. Então queria saber se você conhece uma maneira simplificada de fazer isso. É isso aí, valeu.
  7. Tente declarar as variáveis valor1, valor2 e total como integer. Dim valor1 As Integer Dim valor2 As Integer Dim total As Integer haha, acho que é isso. Mas não sou muito confiável. Tenta aí, mas espera a opinião de alguém mais especializado. Até mais.
  8. Valeu, deu certo. Não tenho certeza se isso acontece, mas aconteceu pelo menos uma vez comigo, que foi quando eu notei. Talvez seja ordenação mesmo. Eu vou tentar aqui em algumas temporadas, conferindo sempre se dá esse erro. Eu também não escolho equipe, e a velocidade normalmene eu vario entra Rápido e Muito Rápido. Valeu. EDIT: e foi mal aí cara, esqueci de reduzir o número de etapas de uma temporada. É por que normalmente é 18, mas eu coloco 4 ou menos pra ir pro fim da temporada logo. Se quiser mudar isso, se é que você já não sabe, é só trocar o número 18 para um outro qualquer na seguinte linha: If etapa = 18 Then no form PontosCorridaEquipe.
  9. Mandei. EDITADO: Gostaria de pedir então, que você olhasse mais um problema que está dando. As vezes, durante as corridas, o tempovolta do segundo colocado aparece errado, tipo: 59:59,599 Sendo que era para aparecer a diferença de seu tempo comparado ao tempo do primeiro colocado. Não necessariamente, os erros que eu falei vão acontecer na primeira corrida ou primeira temporada, mas eles acontecem. EDIT: ta ok, sem problema. Valeu. Editei pra não precisar postar a toa.
  10. Notei aqui que aquele código para o contrato das equipes controladas pela CPU ainda não estão certas. Acho que eu que não vinha notando mesmo, mas agora eu fui ver, e a Ferrari, após o término da primeira temporada, mesmo já tendo o melhor motor do jogo, e tendo mais de 40.000 de finanças (o motor mais caro custa 10.000), comprou o 4° melhor motor do jogo. Na temporada seguinte, a McLaren tendo o melhor motor do jogo também, e com mais de 60.000, comprou o 3° melhor motor. Olha só o código (apenas dos motores): '_______________________MOTOR_______________________ Randomize For j = 0 To UBound(xEquipe) h(j) = Int(1 * Rnd) + 1 Next For j = 0 To UBound(xEquipe) If xEquipe(j).nome = xJogador.equipe Then h(j) = 0 ElseIf xEquipe(j).nome <> xJogador.equipe Then b = 7 - nMotor(j) If (nMotor(j)) = 7 Then If xEquipe(j).finanças >= xMotor(7).custo Then xEquipe(j).Motor = xMotor(7).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(7).custo nMotor(j) = 7 h(j) = 0 Else h(j) = 1 End If ElseIf (nMotor(j)) = 0 Then If xEquipe(j).finanças > xMotor(0).custo Then h(j) = 1 Else xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 h(j) = 0 End If End If If xEquipe(j).finanças > 0 Then If h(j) = 1 Then If xEquipe(j).finanças > xMotor(nMotor(j)).custo Then a = Int(b * Rnd) + 1 If xEquipe(j).finanças >= xMotor(nMotor(j) + a).custo Then xEquipe(j).Motor = xMotor(nMotor(j) + a).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) + a).custo nMotor(j) = nMotor(j) + a Else xEquipe(j).Motor = xMotor(nMotor(j)).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j)).custo nMotor(j) = nMotor(j) End If ElseIf xEquipe(j).finanças < xMotor(nMotor(j)).custo Then If xEquipe(j).finanças >= xMotor(nMotor(j) - 1).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 1).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 1).custo nMotor(j) = nMotor(j) - 1 Else If (nMotor(j) - 2) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 2).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 2).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 2).custo nMotor(j) = nMotor(j) - 2 Else If (nMotor(j) - 3) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 3).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 3).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 3).custo nMotor(j) = nMotor(j) - 3 Else If (nMotor(j) - 4) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 4).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 4).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 4).custo nMotor(j) = nMotor(j) - 4 Else If (nMotor(j) - 5) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 5).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 5).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 5).custo nMotor(j) = nMotor(j) - 5 Else If (nMotor(j) - 6) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 6).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 6).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 6).custo nMotor(j) = nMotor(j) - 6 Else xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 End If End If End If End If End If End If End If End If ElseIf xEquipe(j).finanças <= 0 Then xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 End If End If Next [/codebox] O que será que tem de errado? Eu também fiz o seguinte: [code]aux1 = nMotor(i) nMotor(i) = nMotor(Min) nMotor(Min) = aux1 aux2 = nPneu(i) nPneu(i) = nPneu(Min) nPneu(Min) = aux2 aux3 = nCombustível(i) nCombustível(i) = nCombustível(Min) nCombustível(Min) = aux3[/code] como você havia sugerido.
  11. Descobri o erro aqui, e já corrigi, agora tá certinho. Valeu. Só uma coisa. Eu estou fazendo assim: o tempo total do primeiro colocado da corrida aparece do lado do seu nome, enquanto os demais pilotos aparece somente a diferença do tempo (xPiloto(i).tempovolta - xPiloto(21).tempovolta). Mas eu havia tirado as horas daquela função, ou seja, só aparecem os minutos, segundos e milésimos. Eu queria fazer com que, apenas quando tempovolta > 59:59,999, as horas aparecessem. Tem como?
  12. Eu pensei aqui, e é muito mais lógico se eu fizesse da seguinte maneira: xPiloto(i).diftempo = xPiloto(i).tempovolta - xPiloto(21).tempovolta e não da maneira anterior, já que o tempovolta do primeiro piloto é menor que o dos pilotos restantes, e não o contrário. E quase deu certo. Ainda tá dando um problema. Note na imagem abaixo, os tempos dos pilotos Hamilton e do Kubica, 5° e 6° lugares respectivamente. Essa imagem foi tirada no fim da corrida, e o Hamilton terminou na frente do Kubica. Mas o problema é que o tempo final do Hamilton foi maior que o do Kubica, ou seja, como pode o Kubica ter terminado a corrida em menos tempo que o Hamilton, e ter terminado atrás dele? Pra ficar mais fácil de perceber isso, eu ainda coloquei o valor da AI de cada piloto, do lado do tempo. Mesmo o tempo do Hamilton ter sito maior que o do Kubica, seu AI foi também maior, lembrando que quanto maior o AI menor o tempo. Se você quiser que eu te mande o projeto, é só avisar. Ok. Agora quanto ao segundo problema que eu havia falado, trocando aquela linha, deu certo aqui, e aparecem no máximo dois algarismos. Eu até tava pensando aqui, e acho melhor mostrar os milésimos em vez dos centésimos. Mas bem, o problema não é esse. É que eu queria que, para o caso de dar, por exemplo: 1:30,6 , em vez de aparecer dessa forma, apareceria assim: 1:30,600. É isso aí. Valeu.
  13. Resolveu, valeu cara. Tipo, agora eu fiz o seguinte: For i = 0 To 21 xPiloto(i).diftempo = xPiloto(21).tempovolta - xPiloto(i).tempovolta Next pra determinar a diferença de tempo do primeiro piloto da corrida para os restantes. E para aparecer essa diferença: Me.Controls("lbl" & 22 - (i)).Caption = xPiloto(i).nome & " + " & MontaHoraS(xPiloto(i).diftempo) Só que tá dando um erro. Não sei muito bem o que é, mas acontece que a diferença do primeiro piloto para o segundo piloto, algumas vezes, aparece como mais de 59minutos, o que é uma coisa absurda. Mas ainda assim, mesmo com essa diferença, as vezes o segundo colocado ultrapassa o primeiro em uma volta. Esse foi só um exemplo, o restante das diferenças de tempo também estão todas erradas. Então eu tenho duas perguntas: Como corrigir isso? E também como fazer para que apareçam sempre apenas duas 'casas' de mílésimos. Por exemplo: as vezes aparece 1:30,3666666666666666666 Eu queria fazer aparecer sempre duas casas, ou seja, nem mais nem menos. Valeu.
  14. Mandei. Aí tem esse problema no form Corrida, e tem também o problema no form Qualificação, que eu falei no meu post mais acima.
  15. No Command: For i = 0 To 21 xPiloto(i).ai2 = Int((xPiloto(i).chance) * Rnd) + 1 xPiloto(i).ai = xPiloto(i).ai + xPiloto(i).ai2 + xPiloto(i).poslargada xPiloto(i).tempovolta = xPiloto(i).tempovolta + ((10000 - xPiloto(i).ai2) / 100) Next E no Timer: Private Sub Timer1_Timer() For i = 0 To 21 If xPiloto(i).ai > 0 Then xPiloto(i).ai2 = Int((xPiloto(i).chance) * Rnd) + 1 xPiloto(i).ai = xPiloto(i).ai + xPiloto(i).ai2 xPiloto(i).tempovolta = xPiloto(i).tempovolta + ((10000 - xPiloto(i).ai2) / 100) End If If (Int(xPiloto(i).chance * Rnd) + 1) = 1 Then xPiloto(i).ai = 0 End If Next Colocação xPiloto(), 21 tempo = tempo + 1 For i = 0 To 21 If xPiloto(i).ai > 0 Then Me.Controls("lbl" & 22 - (i)).Caption = xPiloto(i).nome & " - " & MontaHoraS(xPiloto(i).tempovolta) ElseIf xPiloto(i).ai = 0 Then Me.Controls("lbl" & 22 - (i)).Caption = xPiloto(i).nome & " - Abandonou" End If For j = 0 To 10 If xPiloto(i).equipe = xEquipe(j).nome Then Me.Controls("lbl" & 22 - (i)).BackColor = xEquipe(j).Cor1 Me.Controls("lbl" & 22 - (i)).ForeColor = xEquipe(j).Cor2 End If Next Next lblVoltas.Caption = "Volta: " & tempo If tempo = 70 Then Timer1.Enabled = False SomaPontos 21, 10, 10 SomaPontos 20, 8, 8 SomaPontos 19, 6, 6 SomaPontos 18, 5, 5 SomaPontos 17, 4, 4 SomaPontos 16, 3, 3 SomaPontos 15, 2, 2 SomaPontos 14, 1, 1 SomaPontos 13, 0, 0.14 SomaPontos 12, 0, 0.13 SomaPontos 11, 0, 0.12 SomaPontos 10, 0, 0.11 SomaPontos 9, 0, 0.1 SomaPontos 8, 0, 0.09 SomaPontos 7, 0, 0.08 SomaPontos 6, 0, 0.07 SomaPontos 5, 0, 0.06 SomaPontos 4, 0, 0.05 SomaPontos 3, 0, 0.04 SomaPontos 2, 0, 0.03 SomaPontos 1, 0, 0.02 SomaPontos 0, 0, 0.01 End If End Sub [/codebox]
  16. Valeu cara, deu certinho. EDIT: Eu fiz: xPiloto(i).tempovolta = ((10000 - xPiloto(i).ai2) / 100) pra somar o tempo das voltas de cada piloto, e depois: Me.Controls("lbl" & 22 - (i)).Caption = xPiloto(i).nome & " - " & MontaHoraS(xPiloto(i).tempovolta) pra mostrar essa soma, mas não está somando corretamente. Pra cada volta aparece um valor diferente do que deveria aparecer. Por exemplo: uma hora a soma de um determinado piloto está igual a 2:30,00, e na volta seguinte, o tempo desse mesmo piloto aparece igual 1:49,00. Outro problema que está dando é na qualificação. Eu tentei fazer o mesmo que fiz com a corrida, aparecendo o melhor tempo de cada piloto: For i = 0 To 21 a = Int(xPiloto(i).chance * Rnd) + 1 If a > xPiloto(i).Qualificação Then xPiloto(i).Qualificação = a xPiloto(i).tempovolta = ((10000 - xPiloto(i).Qualificação) / 100) End If Next Mas também aparece o valor errado. Por exemplo: uma hora aparece 1:35,42 para um piloto, e na volta seguinte aparece 0:35,42. Por que será?
  17. Não, por que olha só. O xPiloto(i).ai, é a soma do número aleatório que é gerado cada volta. O tempo deveria ser apenas da última volta. Quanto ao resto, vou tentar aqui. Valeu. EDIT: Eu fiz: Me.Controls("lbl" & 22 - (i)).Caption = xPiloto(i).nome & " - " & MontaHoraS(xPiloto(i).tempovolta) que nem você disse, mas aparece a seguinte mensagem de erro: "ByRef argument type mismatch"
  18. Como eu relaciono essa função com o resto do projeto? Tipo, pra transformar a AI em tempo eu fiz, seguindo a sua explicação, da seguinte forma: y = (10000 - x) / 100 xPiloto(i).tempovolta = ((10000 - (Int(xPiloto(i).chance * Rnd))) / 100) Que na verdade eu nem sei se está correto, por que acho que a cada vez que essa linha é lida ela gera um número aleatório novamente. E se não tá certo, eu não sei como fazer. Mas bem, isso não importa agora. Imagine que o AI de um determinado piloto tenha dado 1000. Isso equivale a 90 segundos, que dividido por 60, dá 1,5 minutos. A partir daí, o que eu tenho que fazer, utilizando essa função que você passou, para transformar 1,5 minutos em 1min30seg? Valeu.
  19. Eu entendi a sua lógica, mas há um problema. Eu não planejava estipular um limite para a AI, as equipes poderiam (e já podem) treinar os mecânicos e os pilotos, e desenvolver o chassi. Mas bem, vou pensar em alguma solução, baseado no seu post acima. Acho que dá pra fazer sem mudar muita coisa. Eu posso encontrar uma fórmula, do jeito que você fez, só que supondo uma AI meio que absurda para o tempo de 0 segundos, enquanto a AI mínima, que é zero, equivale a um tempo de, sei lá, 3 minutos, talvez mais. Bem, vou ver isso aqui. Se tiver alguma outra idéia, fale ai. Valeu mesmo cara. EDIT: Tipo, eu não sei se tá muito certo não, mas eu consegui fazer aqui. Só que o tempo está aparecendo como 1,5 minutos, que equivale a 1min30seg. Eu quero fazer aparecer 1min30seg, e não 1,5minutos. Como eu faço isso? E como eu devo declarar a variável do tempo? Obs: eu fiz do jeito que você me ensinou, ou seja, estipulando um valor máximo para a AI de cada piloto, que não é da maneira que eu queria, como disse acima. Se souber como fazer sem ter que estipular esse valo máximo, me ensina por favor. Valeu.
  20. Valeu cara, deu certinho. Tipo, agora eu tava querendo fazer com que os tempos de cada volta, de cada piloto, aparecessem. Mas pra isso eu tenho que inventar um jeito de relacionar o tempo com a AI. Imagine que o tempo médio de cada volta seja 1min20s (80 segundos). Se a AI for alta, o tempo é menor que isso, e se for baixa, maior que isso. Só que eu não tenho a menor idéia de como fazer. Tem alguma idéia?
  21. Corrigi aqui, valeu. Agora, eu vou te passar o proejto por MP, pode ser? Tem dois erros acontecendo no mesmo lugar do jogo. Na qualificação, você vai perceber que passando da 2ª para a 3ª etapa, vai dar o erro, que é o seguinte: os pilotos que no final da 2ª etapa ficaram em 11° e 12°, na etapa final, aparecem duas vezes cada um. O outro erro também se relaciona à qualificação. Se você não mudar a velocidade do jogo, quando entrar no form da corrida, antes de apertar qualquer coisa, vão aparecer todos os pilotos, ordenados exatamente como estavam no final da qualificação. Mas se você mudar a velocidade para 'Rápido', isso já não acontece. Parece que não faz sentido, mas realmente dá esse erro, somente por mudar a velocidade (diminuir o Interval de cada Timer) da corrida. Bem... vê aí quando puder. Valeu cara.
  22. Aff... o pior é que eu tinha feito isso antes, mas não esperei chegar na 70° volta pra conferir.Agora deu certo, valeu. Hmm.... com certeza, de propósito eu não fiz isso. Eu já havia notado que isso acontecia, mas achava que era normal, sei lá. Vou corrigir isso aqui também. Bem... melhoras pra você cara. Se cuida. E não se preocupa em responder às minhas dúvidas, não me importo. Valeu. EDIT: Vou deixar aqui minha dúvida, mas não precisa responder agora. É mais uma vez sobre a questão dos contratos das equipes controladas pelo CPU. Há um tempo eu dei uma "limpada" naquele código, vê se parece mais coerente pra você agora: For j = 0 To UBound(xEquipe) If xEquipe(j).nome = xJogador.equipe Then h(j) = 0 ElseIf xEquipe(j).nome <> xJogador.equipe Then b = 7 - nMotor(j) If (nMotor(j)) = 7 Then If xEquipe(j).finanças >= xMotor(7).custo Then xEquipe(j).Motor = xMotor(7).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(7).custo nMotor(j) = 7 h(j) = 0 Else h(j) = 1 End If ElseIf (nMotor(j)) = 0 Then If xEquipe(j).finanças > xMotor(0).custo Then h(j) = 1 Else xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 h(j) = 0 End If End If If xEquipe(j).finanças > 0 Then If h(j) = 1 Then If xEquipe(j).finanças > xMotor(nMotor(j)).custo Then a = Int(b * Rnd) + 1 If xEquipe(j).finanças >= xMotor(nMotor(j) + a).custo Then xEquipe(j).Motor = xMotor(nMotor(j) + a).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) + a).custo nMotor(j) = nMotor(j) + a Else xEquipe(j).Motor = xMotor(nMotor(j)).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j)).custo nMotor(j) = nMotor(j) End If ElseIf xEquipe(j).finanças < xMotor(nMotor(j)).custo Then If xEquipe(j).finanças >= xMotor(nMotor(j) - 1).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 1).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 1).custo nMotor(j) = nMotor(j) - 1 Else If (nMotor(j) - 2) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 2).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 2).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 2).custo nMotor(j) = nMotor(j) - 2 Else If (nMotor(j) - 3) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 3).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 3).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 3).custo nMotor(j) = nMotor(j) - 3 Else If (nMotor(j) - 4) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 4).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 4).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 4).custo nMotor(j) = nMotor(j) - 4 Else If (nMotor(j) - 5) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 5).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 5).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 5).custo nMotor(j) = nMotor(j) - 5 Else If (nMotor(j) - 6) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças >= xMotor(nMotor(j) - 6).custo Then xEquipe(j).Motor = xMotor(nMotor(j) - 6).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(nMotor(j) - 6).custo nMotor(j) = nMotor(j) - 6 Else xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 End If End If End If End If End If End If End If End If ElseIf xEquipe(j).finanças <= 0 Then xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 End If End If Next [/codebox] Esse é só a parte dos motores. Mas bem, logo no início desse código, você pode notar que eu fiz o seguinte: [code]If xEquipe(j).nome = xJogador.equipe Then h(j) = 0 ElseIf xEquipe(j).nome <> xJogador.equipe Then <comprar motor>[/code] Ou seja, se o nome da Equipe(j) for diferente do nome da Equipe controlado pelo jogador, ela compra o motor, caso contrário, o código pára. Isso é o que deveria acontecer, mas não está acontecendo. Por exemplo: se eu escolho jogar com a McLaren, quando acaba a temporada, a equipe está contratando, automaticamene, um motor diferente. Por que isso está acontecendo? É isso aí. Não precisa ter pressa. Valeu.
  23. Foi mal cara, não tinha visto esse tópico seu. Não entendi bem o que ta acontecendo, mas boa sorte aí. Não se preocupa não. Não tem problema nenhum em esperar. Até mais.
  24. Opa! E ai cara, bom? Você chegou a receber projeto por MP? É que eu fiquei sem saber se você recebeu ou não, por que quando eu te passei tava dando alguns erros no fórum e tal, aí eu pensei que talvez não tivesse chegado aí.
×
×
  • Criar Novo...