
Darknnez
Membros-
Total de itens
216 -
Registro em
-
Última visita
Tudo que Darknnez postou
-
Sem problema, como eu disse, sem pressa.
-
Hmm.. entendi, valeu cara. Pô, não pude mandar o projeto ontem (hoje de madrugada). Como eu disse antes, tenho que acordar cedo todo dia, e portanto, não posso mais ficar enrolando até muito tarde, como fiz nas férias. Vou tentar sair todos os dias no máximo 12:00. Mas tudo ok, vou mandar agora, e você analisa quando puder, sem pressa.
-
huahuahauhauhauhauahuahahaua Cara, eu entendi sim. Eu fiz isso que você falou, desde a primeira vez. o xPiloto(j).nome tava igual a "Button", eu percorri com o F8 todos os 22 labels, e mesmo assim tava pulando o For. Aí depois disso o valor da Label (acho que é i né?) zerava, e o xPiloto(j).nome mudava para outro piloto qualquer. Mas bem, deu certo aqui com a sua outra explicação. Valeu cara. huahuahauahuahauahau sorte mesmo Também uso Firefox, muito melhor que IE. Mais uma vez, valeu mesmo cara. EDIT: Lembra aquele erro que dava antigamente, que as vezes uma equipe qualquer aparecia em último no Form PontosEquipeCorrida, injustamente? Tipo: os pilotos da EquipeX chegam em 10° e 11°, e os da EquipeY chegam em 17° e 18°. Nenhuma das equipes pontuou, mas no Form citado acima, a EquipeX aparece atrás da EquipeY. Deu pra sacar? Bem, eu tinha corrigido esse erro, e tinha certeza que não precisava mais me preocupar com isso. Bem, até hoje, quando vi que, a Spyker, que chega com os dois pilotos praticamente sempre em último, está ficando no final das contas, à frente de outras equipes. Lembrando que isso só é um problema por que a posição final de cada equipe define a quantia de dinheiro que vão ganhar. Eu posso te passar o projeto pelo MP? EDIT: Se bem que eu tava vendo agora, e não somente isso que eu te falei está dando errado, como todo o sistema de pontuação está. Nossa, como assim? Isso aconteceu de repente. A pontuação das equipes está sendo distribuida completamente errada.
-
Ok, eu fiz isso agora, e o que aconteceu foi o seguinte: Em todos os casos, o valor de xPiloto(i).nome deram igual a "Button" Na primeira vez, o valor de xEquipe(j).nome deu igual a "Honda", e no restante deu <Subscript out of range>. A única coisa que variou em cada tentativa foi o valor de g, crescentemente. E em todas as vezes aquele mesmo for foi pulado.
-
Ok, vou tentar. Não está dando erro, as labels simplesmente não mudam de cor. EDIT: O programa 'lê' até: For i = 0 To 21 For g = 1 To 22 If Me.Controls("lbl" & g).Caption = xPiloto(i).nome Then E depois disso ele pula o seguinte trecho: For j = 0 To 10 If xPiloto(i).equipe = xEquipe(j).nome Then Me.Controls("lbl" & g).BackColor = xEquipe(j).Cor1 End If Next direto para: End If Next Next Ficou confuso?
-
Não deu certo. Vou postar os códigos, do jeito que estão, para que você possa analisar melhor. Form Corrida: Private Sub Timer1_Timer() For i = 0 To 21 xPiloto(i).ai = xPiloto(i).ai + Int(xPiloto(i).chance * Rnd) + 1 Next Colocação xPiloto(), 21 tempo = tempo + 1 For i = 1 To 22 Me.Controls("lbl" & 22 - (i - 1)).Caption = xPiloto(i - 1).nome & " - " & xPiloto(i - 1).ai Next For i = 0 To 21 For g = 1 To 22 If Me.Controls("lbl" & g).Caption = xPiloto(i).nome Then For j = 0 To 10 If xPiloto(i).equipe = xEquipe(j).nome Then Me.Controls("lbl" & g).BackColor = xEquipe(j).Cor1 End If Next End If Next Next lblVoltas.Caption = "Volta: " & tempo If tempo = 70 Then Timer1.Enabled = False End If End Sub Module1, dentro do type Equipe: Cor1 As Variant Module1, dentro do Private Sub Main: xEquipe(0).Cor1 = &H0& para cada equipe uma cor diferente.
-
Mas eu tinha feito isso antes, e não ta acontecendo nada. As cores dos Labels não estão mudando.
-
Valeu cara, deu certinho. Eu tava querendo agora que o BackColor de cada Label do Form Corrida ficasse com a cor das equipes de cada um dos pilotos. Portanto eu fiz: For i = 0 To 21 For j = 0 To 10 For g = 1 To 22 If ("lbl" & g).Caption = xPiloto(i).nome Then If xPiloto(i).equipe = xEquipe(j).nome Then Me.Controls("lbl" & g).BackColor = xEquipe(j).Cor1 End If End If Next Next Next Mas como você já deve ter percebido, dá um erro devido ao trecho: ("lbl" & g).Caption Se não da pra fazer dessa maneira, existe alguma outro jeito de fazer?
-
Hmm... então fui eu que não entendi o código. Mas vou tentar aqui, valeu. EDIT: Você então sugere que eu faça isso: Private Sub Timer1_Timer() For i = 0 To 21 xPiloto(i).ai = xPiloto(i).ai + Int(xPiloto(i).chance * Rnd) + 1 Next tempo = tempo + 1 For i = 1 To 22 Me.Controls("lbl" & 22 - (tempo - 1)).Caption = xPiloto(tempo - 1).nome & " - " & xPiloto(tempo - 1).ai Next If tempo = 22 Then Timer1.Enabled = False End If End Sub ? Por que se for, não chegou nem perto do que eu quero. hahaha Bem, eu não sei explicar melhor do que já expliquei. Só sei que desse jeito que você me falou, estão acontecendo vários erros: - Os pilotos continuam aparecendo um de cada vez, por ordem da pior AI à melhor AI - Ao que me parece, a AI não está sendo somada corretamente. - E os pilotos não estão sendo ordenados corretamente. Mas valeu.
-
Não... acho que não expliquei direito então. É tipo assim: Depois que o botão é apertado, um número aleatório (AI) é gerado para cada piloto, certo? Ok. Imagina que o PilotoX teve sua AI gerada igual 500, e o PilotoY igual a 400. Até o momento, o PilotoX está na frente do PilotoY, e isso corresponde à primeira volta da corrida. No segundo seguinte, a AI de cada piloto é gerada novamente, e somada a anterior. Por exemplo: nesse instante (segunda volta) a AI do PilotoX deu igual a 300, e a AI do PilotoY deu 500. Então elas são somadas da seguinte forma: Primeira volta AI do PilotoX = 500 AI do PilotoY = 400 Segunda volta AI do PilotoX = AI do PilotoX + 300 AI do PilotoY = AI do PilotoY + 500 Ou seja, após essa segunda volta, o PilotoY estaria na frente (AI = 900) do PilotoX(AI = 800). E isso continua ocorrendo consecutivamente até o 70° segundo (que representam um total de 70 voltas, uma volta para cada 1 segundo). Ficou mais claro agora?
-
Mas tipo, eu estou com dúvida exatamente em como fazer para somar o IA. =p
-
Aaaah! É verdade! Por isso que o motor tava dando certo, e o pneu e o combustível não. Nossa, valeu cara. Tava há uma semana já atrás disso. Mas só pra ter certeza. Eu só preciso ordenar os pneus e os combustíveis, da mesma forma que fiz com o motor? Tipo: aux1 = nPneu(i) nPneu(i) = nPneu(min) nPneu(min) = aux1 e o mesmo com os combustíveis, tudo dentro da mesma função? EDIT: É, eu fiz isso e deu certo. Agora eu tava querendo mudar o sistema de corrida. Na atual, os pilotos vão sendo ordenados gradativamente, do pior ao melhor, um de cada vez, certo? Eu queria fazer com que a cada segundo (Interval: 1000) do Timer, o ai de cada piloto fosse gerado novamente, e somado ao anterior, e mais uma vez, ordenando do piloto com a maior soma ao piloto com a menor soma. Mas dessa vez, pra cada segundo, os pilotos aparecem juntos, de uma vez, sem aquele negócio de aparecer um de cada vez. Eu até tinha conseguido fazer com que a ai somasse, há um tempo atrás, mas preferi deixar como estava, sem salvar, e só mecher com isso mais tarde. Mas eu tentei fazer denovo ontem, e não estou conseguindo. Alguma idéia? Valeu.
-
Ops! Mas também, eu te falei errado. Na verdade, com o motor está tudo ok, como eu havia dito em um post passado. O problema tá acontecendo é com o pneu e com o combustível. Então ignora quando eu disse que as equipes estão comprando o pior motor, mesmo tendo muito dinheiro, por que na verdade elas estão comprando o pior pneu e o pior combustível. E só para te dar uma garantia, aqui isso acontece TODA vez. Logo que passa a primeira temporada, da esse erro. Nem lembro se deu resultado diferente alguma vez, em algum dos testes. EDIT: Mais uma vez, deu logo de cara. A Ferrari logo após a primeira temporada, comprou o pior pneu (Firestone) e o pior combustível (Esso), mas manteve o melhor motor (Ferrari). Se não der na primeira temporada, tenta na segunda, ou terceira. Por que agora, por exemplo, a McLaren não comprou o pior pneu depois da primeira temporada, mas comprou após a segunda temporada.
-
Aqui também deu problema ontem, no fórum. Quanto ao projeto, não é esse o problema. Você me falou o seguinte: uma equipe com muito dinheiro, tem um motor ruim, e quando vai comprar outro, ela compra um motor melhor que o dela, mas que não é o melhor do jogo. O problema que ta acontecendo agora, é que uma equipe que tem muito dinheiro, e já tem o melhor motor, ta comprando o pior motor do jogo logo de cara. Tudo bem se no caso a equipe fosse pobre, mas aí ela ira comprando um motor pior de cada vez, por exemplo: tem o motor 7, ai compra o 6, e depois compra o 5, etc... até chegar no pior motor, que é o 0. Mas no caso, as equipes aqui estão comprando logo de cara o pior motor, mesmo tendo muito dinheiro. Ou seja, não era para comprar nem mesmo um motor pior do que o que já tem, quanto menos o pior motor. Deu pra entender?
-
Vou mandar o projeto novamente por MP, ok? O problema é que, não necessariamente, as equipes vão comprar o pior motor e/ou combustível, mesmo tendo muito dinheiro. Se não deu na primeira ou na segunda temporada, tenta mais algumas vezes. Aqui quase sempre, acho que 95% das vezes, da o problema logo de cara na primeira temporada.
-
Ok, valeu cara. Vou passar o código como está agora, de qualquer forma. Essa codebox é boa por que não ocupa um espaço muito grande. If etapa = 4 Then temporada = temporada + 1 For k = 0 To UBound(xPiloto) xPiloto(k).pontos = 0 Next '_______________________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) c = nMotor(j) - 0 If (nMotor(j) + 1) > 7 Then h(j) = 3 ElseIf (nMotor(j) + B) = nMotor(j) Then h(j) = 3 ElseIf (nMotor(j) - c) = nMotor(j) Then h(j) = 2 ElseIf (nMotor(j) - 1) < 0 Then h(j) = 2 End If 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 ElseIf h(j) = 2 Then xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 ElseIf h(j) = 3 Then xEquipe(j).Motor = xMotor(7).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(7).custo nMotor(j) = 7 End If End If Next '_______________________COMBUSTÍVEL_______________________ 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 = 4 - nCombustível(j) c = nCombustível(j) - 0 If (nCombustível(j) + 1) > 4 Then h(j) = 3 ElseIf (nCombustível(j) + B) = nCombustível(j) Then h(j) = 3 ElseIf (nCombustível(j) - c) = nCombustível(j) Then h(j) = 2 ElseIf (nCombustível(j) - 1) < 0 Then h(j) = 2 End If If h(j) = 1 Then If xEquipe(j).finanças > xCombustível(nCombustível(j)).custo Then a = Int(b * Rnd) + 1 If xEquipe(j).finanças > xCombustível(nCombustível(j) + a).custo Then xEquipe(j).Combustível = xCombustível(nCombustível(j) + a).nome xEquipe(j).finanças = xEquipe(j).finanças - xCombustível(nCombustível(j) + a).custo nCombustível(j) = nCombustível(j) + a Else xEquipe(j).Combustível = xCombustível(nCombustível(j)).nome xEquipe(j).finanças = xEquipe(j).finanças - xCombustível(nCombustível(j)).custo nCombustível(j) = nCombustível(j) End If ElseIf xEquipe(j).finanças < xCombustível(nCombustível(j)).custo Then If xEquipe(j).finanças > xCombustível(nCombustível(j) - 1).custo Then xEquipe(j).Combustível = xCombustível(nCombustível(j) - 1).nome xEquipe(j).finanças = xEquipe(j).finanças - xCombustível(nCombustível(j) - 1).custo nCombustível(j) = nCombustível(j) - 1 Else If (nCombustível(j) - 2) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças > xCombustível(nCombustível(j) - 2).custo Then xEquipe(j).Combustível = xCombustível(nCombustível(j) - 2).nome xEquipe(j).finanças = xEquipe(j).finanças - xCombustível(nCombustível(j) - 2).custo nCombustível(j) = nCombustível(j) - 2 Else If (nCombustível(j) - 3) < 0 Then h(j) = 0 ElseIf xEquipe(j).finanças > xCombustível(nCombustível(j) - 3).custo Then xEquipe(j).Combustível = xCombustível(nCombustível(j) - 3).nome xEquipe(j).finanças = xEquipe(j).finanças - xCombustível(nCombustível(j) - 3).custo nCombustível(j) = nCombustível(j) - 3 Else xEquipe(j).Combustível = xCombustível(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xCombustível(0).custo nCombustível(j) = 0 End If End If End If End If ElseIf h(j) = 2 Then xEquipe(j).Combustível = xCombustível(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xCombustível(0).custo nCombustível(j) = 0 ElseIf h(j) = 3 Then xEquipe(j).Combustível = xCombustível(4).nome xEquipe(j).finanças = xEquipe(j).finanças - xCombustível(4).custo nCombustível(j) = 4 End If End If Next '_______________________PNEU_______________________ 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 = 2 - nPneu(j) c = nPneu(j) - 0 If (nPneu(j) + 1) > 2 Then h(j) = 3 ElseIf (nPneu(j) + B) = nPneu(j) Then h(j) = 3 ElseIf (nPneu(j) - c) = nPneu(j) Then h(j) = 2 ElseIf (nPneu(j) - 1) < 0 Then h(j) = 2 End If If h(j) = 1 Then If xEquipe(j).finanças > xPneu(nPneu(j)).custo Then a = Int(b * Rnd) + 1 If xEquipe(j).finanças > xPneu(nPneu(j) + a).custo Then xEquipe(j).Pneu = xPneu(nPneu(j) + a).nome xEquipe(j).finanças = xEquipe(j).finanças - xPneu(nPneu(j) + a).custo nPneu(j) = nPneu(j) + a Else xEquipe(j).Pneu = xPneu(nPneu(j)).nome xEquipe(j).finanças = xEquipe(j).finanças - xPneu(nPneu(j)).custo nPneu(j) = nPneu(j) End If ElseIf xEquipe(j).finanças < xPneu(nPneu(j)).custo Then If xEquipe(j).finanças > xPneu(nPneu(j) - 1).custo Then xEquipe(j).Pneu = xPneu(nPneu(j) - 1).nome xEquipe(j).finanças = xEquipe(j).finanças - xPneu(nPneu(j) - 1).custo nPneu(j) = nPneu(j) - 1 Else xEquipe(j).Pneu = xPneu(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xPneu(0).custo nPneu(j) = 0 End If End If ElseIf h(j) = 2 Then xEquipe(j).Pneu = xPneu(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xPneu(0).custo nPneu(j) = 0 ElseIf h(j) = 3 Then xEquipe(j).Pneu = xPneu(2).nome xEquipe(j).finanças = xEquipe(j).finanças - xPneu(2).custo nPneu(j) = 2 End If End If Next etapa = 0 MsgBox "Acabou a temporada" End If [/codebox]
-
Sim. Os códigos dos motores variam de 0 à 7, enquanto o dos pneus varia de 0 à 2. Por isso eu eu faço: b = 7 - nPneu(j) para os motores. E: b = 2 - nPneu(j) para os pneus. E depois eu mando gerar um número aleatório. No caso dos pneus: a = Int(b * Rnd) + 1 If xEquipe(j).finanças > xPneu(nPneu(j) + a).custo Then xEquipe(j).Pneu = xPneu(nPneu(j) + a).nome xEquipe(j).finanças = xEquipe(j).finanças - xPneu(nPneu(j) + a).custo nPneu(j) = nPneu(j) + a
-
Eu entendi. Mas por algum motivo minha lógica continua errada. O motor parece que tá tudo certo, o combustível eu nem notei, mas o pneu eu tenho certeza que tá errado. As equipes, mesmo tendo muito dinheiro, continuam comprando o pior pneu. Mas valeu.
-
Mas não era exatamente assim que estava antes? Antes eu mudava o valor de h(j) para 2 ou 3, dependendo do caso, para comprar o motor lá embaixo. Aí você me sugeriu trocar o h(j) = 2 pelo código do Elseif que ta lá embaixo. Não estou entendendo muito bem.
-
Eu fiz o que você indicou, só que agora a Ferrari, como já começa com o melhor motor, na temporada seguinte, aparece sem motor nenhum. Ficou assim: 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) c = nMotor(j) - 0 If (nMotor(j) + 1) > 7 Then xEquipe(j).Motor = xMotor(7).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(7).custo nMotor(j) = 7 ElseIf (nMotor(j) + b) = nMotor(j) Then xEquipe(j).Motor = xMotor(7).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(7).custo nMotor(j) = 7 ElseIf (nMotor(j) - c) = nMotor(j) Then xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 ElseIf (nMotor(j) - 1) < 0 Then xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 End If 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 ElseIf h(j) = 2 Then xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 ElseIf h(j) = 3 Then xEquipe(j).Motor = xMotor(7).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(7).custo nMotor(j) = 7 End If End If Next EDIT: Fazendo alguns testes aí agora, a McLaren, comprou o motor Ferrari, mas mesmo tendo muito dinheiro, mais do que o necessário, comprou o pior pneu e o pior combustível.
-
Eu arrumei o problema do If no pneu sim, mas deve ser por esse motivo que você falou mesmo, vou tentar corrigir aqui. Esse c = nMotor(j) - 0 parece que não faz muito sentido mesmo. Acho que só ta aí por que no início eu ia fazer - 1, e quando eu lembrei que os números dos motores variam do 0 ao 7, coloquei - 0. Valeu!
-
Não entendi bem no que isso influencía. Não ta correndo como devia? Nossa, que estupidez a minha. Nem percebi. Bem, eu obrigo as equipes a comprar motor para dificultar um pouco o jogo. Caso contrário, a tendência é que depois de muito tempo, todas as equipes teriam todas as melhores peças. E também por que é uma espécie de contrato. Você não compra o motor, você faz um contrato com a fornecedora, que te fornece os motores necessários para uma temporada apenas, e depois você pode contratar um motor melhor ou contratar o mesmo. O difícil mesmo é fazer que as equipes pensem inteligentemente, como por exemplo fazê-las reconhecer quando é a melhor hora para contratar, quando é necessário economizar, etc. Isso é muito difícil, e já foi uma luta pra conseguir fazer isso aí. E se uma equipe não tiver dinheiro para comprar nenhum motor, sinceramente, eu não sei o que fazer. Eu fiz com que se uma equipe não tenha dinheiro para contratar o segundo pior motor, ela contrata o pior a qualquer custo. No caso, se suas finanças forem menor que o custo do pior motor, ficariam com dinheiro negativo. Mas eu não fiz isso por opção, fiz por que não sei fazer melhor. EDIT: Deu certo. Valeu ai! EDIT2: Se bem que eu acho que minha lógica não deu muito certo. Por algum motivo, a Ferrari, por exemplo, as vezes compra o pior pneu, mesmo tendo dinheiro de sobra para comprar o melhor. E as equipes com pouco dinheiro as vezes não compram nenhum motor, e com isso, não gastam dinheiro.
-
Vou te mandar o projeto denovo, pode ser? To com um problema. Eu estou tentando fazer com que as equipes controladas pelo computador, não só possam contratar um motor diferente, como também contratar qualquer motor que seja melhor que o que já tem, ou se não tiver dinheiro suficiente, contratar um motor pior. Eu até consegui fazer isso, mas o problema é com a equipe Ferrari. Como ela já tem o melhor motor, eu fiz com que não fosse necessário contratar outro, a não ser que seja necessário (se não estiver com dinheiro suficiente. Mas não está dando certo. Qualquer equipe, portanto, que chegar a contratar o motor ferrari (o melhor), teria o mesmo problema. Para isso eu fiz, no MenuEquipe, o seguinte trecho: b = 7 - nMotor(j) c = nMotor(j) - 0 If (nMotor(j) + 1) > 7 Then h(j) = 3 ElseIf (nMotor(j) + b) = nMotor(j) Then h(j) = 3 ElseIf (nMotor(j) - c) = nMotor(j) Then h(j) = 2 ElseIf (nMotor(j) - 1) < 0 Then h(j) = 2 E mais embaixo: ElseIf h(j) = 2 Then xEquipe(j).Motor = xMotor(0).nome xEquipe(j).finanças = xEquipe(j).finanças - xMotor(0).custo nMotor(j) = 0 ElseIf h(j) = 3 Then xEquipe(j).Motor = xMotor(7).nome xEquipe(j).finanças = xMotor(7).custo nMotor(j) = 7 Vou te mandar por MP, assim você pode ver o cósigo todo que está no MenuEquipe. Para ver o motor e as finanças de cada equipe, é só clicar em Equipes, no mesmo menu. Assim, você pode notar que ao final de 4 corridas (uma temporada, no caso), a Ferrari permanece com o mesmo motor, mas suas finanças não diminuem como deveriam. Valeu.