View Full Version : AJUDA Desespero em VB.NET


Guga
20-10-2006, 22:44
E a primeira vez que programo, aprendi os basicos por ai na net e com um colega meu que sabe algumas cenas...so que agora estou com um dilema.....o que estou a tentar fazer e uma especie de calculadora de poder para um jogo online, o The Crims...
O codigo que tenho e este....

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Defesa As Integer
Dim escudo As Integer
If CC.Text = ("Taco de baseball") Then
Defesa.Equals(8)
End If
If Combo2.Text = ("Casaco brilhante") Then
escudo.Equals(80)
End If
If CC.Text = ("Faca") Then
Defesa.Equals(8)
End If
If Combo2.Text = ("Colete") Then
escudo.Equals(10)
End If
If CC.Text = ("Espada") Then
Defesa.Equals(15)
End If
If Combo2.Text = ("Casaco de cabedal") Then
escudo.Equals(40)
End If
If CC.Text = ("Moto-serra") Then
Defesa.Equals(12)
End If
If Combo2.Text = ("Colete a prova de balas") Then
escudo.Equals(150)
End If
If CC.Text = ("Glock") Then
Defesa.Equals(20)
End If
If Combo2.Text = ("Casaco de combate futurista") Then
escudo.Equals(200)
End If
If CC.Text = ("Desert eagle") Then
Defesa.Equals(30)
End If
If Combo2.Text = ("Casaco de nomex :)") Then
escudo.Equals(300)
End If
If CC.Text = ("Uzi") Then
Defesa.Equals(26)
End If
If CC.Text = ("MP5") Then
Defesa.Equals(42)
End If
If CC.Text = ("Caçadeira") Then
Defesa.Equals(30)
End If
If CC.Text = ("AK47") Then
Defesa.Equals(45)
End If
If CC.Text = ("Colt M4A1") Then
Defesa.Equals(68)
End If
If CC.Text = ("Espingarda de sniper") Then
Defesa.Equals(110)
End If
If CC.Text = ("Raygun") Then
Defesa.Equals(98)
End If
If CC.Text = ("BFG9000") Then
Defesa.Equals(85)
End If
If CC.Text = ("Maquina do terror") Then
Defesa.Equals(126)
End If

POWER.Text=(Convert.ToDouble(Resistencia.Text / 3)+Convert.ToDouble(Forca.Text / 3) + Convert.ToDouble((Inteligencia.Text) / 2 / 3)) + Defesa + escudo

End Sub
End Class
Mas a equação que pretendo que de é: Resultado(poder) = (intelligencia + força + resistencia/2)/3 + poder da arma (variavel Defesa)+escudo (variavel escudo) Tentei mas com este codigo feito por mim da mal...eu sei que esta cheio de erros provavelmente, mas precisava dumsa dicas..obrigado :):x2:

AwakE
20-10-2006, 23:04
If CC.Text = ("BFG9000") Then
Defesa.Equals(85)

O que tu queres é "Defesa = 85", e não "Defesa.Equals(85)". Defesa.Equals(85) retorna 1 se Defesa for igual a 85 e zero se for diferente de 85.

POWER.Text=(Convert.ToDouble(Resistencia.Text)/2+Convert.ToDouble(Forca.Text) + Convert.ToDouble(Inteligencia.Text)) /3+ Defesa + escudo

Guga
20-10-2006, 23:15
Pois acho que o equals se usa no VB6 para = ou assim, foi um colega meu k me disse......
PS: Obrigado, vo ver se da... :D:D

Guga
20-10-2006, 23:24
Meu amigo! Es o máior! LOL..... tks:)
Ja agora se quiseres um jogo engraçado.....www.thecrims.com (http://www.techzonept.com/www.thecrims.com)
Eu fartei m de rir com ele nos primeiros dias e agr mesmo kd o abro inda me da vontade de partir a rir com alguns pormenores........

Guga
21-10-2006, 10:43
Tenho mais uma duvida, se eu agora criar um combobox com varios assaltos, e criar a valiavel dela

dim assaltos as integer


depois posso por, se um assalto for "banco".....

If Assaltos.Text(é o nome da combobox) = ("Banco") Then
Assaltos = (1200)
End If


Mas depois essa variavel queria que fosse comparada com o resultado do codigo posto no post anterior, ou seja, se o resultado da equação dopost anterior for maior que este valor dos assaltos, apareceria uma msgbox("Podes assaltar!") ou assim do genero..
.Se me puderem ajudar... Obrigado
Cumps

SoundSurfer
21-10-2006, 11:00
Coloca o valor do post anterior num campo invisível.

Guga
21-10-2006, 11:29
Desculpa nao percebi muito bem o que querias dizer...e se e algo de codigo podes dar um exemplo?

Guga
21-10-2006, 11:56
Tentei inventar e defini a variavel: Dim assaltos as integer

e dps:
If assaltos = ("Forte") Then
assaltos = (100)
End If
If POWER.Text > assaltos Then
MsgBox("Podes atacar")
End If

Mas acho que o simbolo > nao tem a funçao desejada....LOL
Ele quando tento seleccionar o forte e cliko para fazer os calculos da me erro e vai para a zona do codigo e mete uma linha co fundo amarelo....

SoundSurfer
21-10-2006, 12:08
nesta linha: "If POWER.Text > assaltos Then"
estás a usar o operador ">" para comparar uma string com um inteiro, o que está errado. tens de converter a string num inteiro usando o método Convert.ToInt32 (http://msdn2.microsoft.com/en-us/library/sf1aw27b.aspx):

If Convert.ToInt32(POWER.Text) > assaltos Then

Quanto ao campo invisível, colocas algo do tipo: <input type="hidden" id="valorAnterior" runat="server" /> no teu HTML. Sempre que acabes de calcular um valor, guarda-lo no campo invisível. No post seguinte que fizeres, se acederes a esse campo, está lá o valor.

HecKel
21-10-2006, 12:09
Porque o POWER.Text é uma string e o assaltos é um integer. Estás a comparar tipos diferentes.

Converte a string para inteiro que isso resulta.

abraços, HecKel

Edit: O SoundSurfer foi mais rápido...., mas SoundSurfer repara que ele fala de VB.NET e não de uma página..., estás aí a confundir coisas na parte do campo invisivel.

Guga
21-10-2006, 12:39
ou algo assim foi o que me apareceu kuando:
If Convert.ToInt32(POWER.Text) > Assaltos Then
MsgBox("Podes atacar!")
End If
If Convert.ToInt32(POWER.Text) < Assaltos Then
MsgBox("Podes atacar")
End IfO que tinha colocado era:


http://img98.imageshack.us/img98/3994/cqh2.jpg

Quando carreguei no Calcular apareceu o codigo, e selecionou uma linha a amarelo a dizer "Format exception was unhandeled"
Codigo completo abaixo:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Ataque As Integer
Dim Escudo As Integer
Dim Assaltos As Integer
If CC.Text = ("Taco de baseball") Then
Ataque = (8)
End If
If Combo2.Text = ("Casaco brilhante") Then
Escudo = (80)
End If
If CC.Text = ("Faca") Then
Ataque = (8)
End If
If Combo2.Text = ("Colete") Then
Escudo = (10)
End If
If CC.Text = ("Espada") Then
Ataque = (15)
End If
If Combo2.Text = ("Casaco de cabedal") Then
Escudo = (40)
End If
If CC.Text = ("Moto-serra") Then
Ataque = (12)
End If
If Combo2.Text = ("Colete a prova de balas") Then
Escudo = (150)
End If
If CC.Text = ("Glock") Then
Ataque = (20)
End If
If Combo2.Text = ("Casaco de combate futurista") Then
Escudo = (200)
End If
If CC.Text = ("Desert eagle") Then
Ataque = (30)
End If
If Combo2.Text = ("Casaco de Nomex") Then
Escudo = 300
End If
If CC.Text = ("Uzi") Then
Ataque = (26)
End If
If CC.Text = ("MP5") Then
Ataque = (42)
End If
If CC.Text = ("Caçadeira") Then
Ataque = (30)
End If
If CC.Text = ("AK47") Then
Ataque = (45)
End If
If CC.Text = ("Colt M4A1") Then
Ataque = (68)
End If
If CC.Text = ("Espingarda de sniper") Then
Ataque = (110)
End If
If CC.Text = ("Raygun") Then
Ataque = (98)
End If
If CC.Text = ("BFG9000") Then
Ataque = (85)
End If
If CC.Text = ("Maquina do terror") Then
Ataque = (126)
End If
If Combo2.Text = ("Nenhum") Then
Escudo = (0)
End If
If CC.Text = ("Nenhuma") Then
Ataque = (0)
End If
If Forca.Text = (0) Then
MsgBox("Nao preencheste a força")
End If
If Inteligencia.Text = (0) Then
MsgBox("Nao preencheste a Inteligencia")
End If
If Resistencia.Text = (0) Then
MsgBox("Nao preencheste a Resistencia")
End If
If Convert.ToInt32(POWER.Text) > Assaltos Then
MsgBox("Podes atacar!")
End If
If Convert.ToInt32(POWER.Text) < Assaltos Then
MsgBox("Podes atacar")
End If
POWER.Text = (Convert.ToDouble(Resistencia.Text / 3) + Convert.ToDouble(Forca.Text / 3) + Convert.ToDouble((Inteligencia.Text) / 2 / 3)) + Ataque + Escudo

End Sub

HecKel
21-10-2006, 12:43
Algo que não percebi no teu código, porque é que em alguns casos fazes as afectações com o valor entre parentesis e noutras não? Os parentesis ali não fazem nada...

abraços, HecKel

Guga
21-10-2006, 12:48
Eu ja percebi que nao fazem nada por isso nalguns ja nao puz.....mas isso afecta algo?
E sabes porque nao cnsigo fazelo dizer "Podes atacar" se o valor do assalto for inferior ao do POWER?
:)tks:)
Cumps

HecKel
21-10-2006, 12:54
Antes de mais, de realçar que não programo em VB.NET há uns anitos..., portanto apenas te estou a dizer o que julgo estar mal.

Tu calculas o POWER usando casts para double, essa textbox fica com um valor em double. Não até até que ponto essa conversão resulta ao fazeres depois um cast para integer..., julgo que isso irá truncar o valor como tal não haveria grande problema mas como não tenho a certeza isso também pode ser um potencial problema.

Depois, não vejo em lado nenhum a alterares o valor da variável Assaltos..., tenho ideia que quando não inicializada o VB.NET coloca "lixo" dentro da variável, assim nunca sabes o seu valor..., esta parte também não percebi o que queres fazer.

abraços, HecKel

Guga
21-10-2006, 13:04
Entao mas ele altera com o If assaltos = "Forte" then assaltos = 100 End if
nao altera? e ja agora que ponho em vez de double nas conversoes para ficar mais correcto e menos casas decimais?

HecKel
21-10-2006, 13:09
Entao mas ele altera com o If assaltos = "Forte" then assaltos = 100 End if
nao altera? e ja agora que ponho em vez de double nas conversoes para ficar mais correcto e menos casas decimais?

Não neste pedaço de código em que dizes que é o código completo...

Codigo completo abaixo:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Ataque As Integer
Dim Escudo As Integer
Dim Assaltos As Integer
If CC.Text = ("Taco de baseball") Then
Ataque = (8)
End If
If Combo2.Text = ("Casaco brilhante") Then
Escudo = (80)
End If
If CC.Text = ("Faca") Then
Ataque = (8)
End If
If Combo2.Text = ("Colete") Then
Escudo = (10)
End If
If CC.Text = ("Espada") Then
Ataque = (15)
End If
If Combo2.Text = ("Casaco de cabedal") Then
Escudo = (40)
End If
If CC.Text = ("Moto-serra") Then
Ataque = (12)
End If
If Combo2.Text = ("Colete a prova de balas") Then
Escudo = (150)
End If
If CC.Text = ("Glock") Then
Ataque = (20)
End If
If Combo2.Text = ("Casaco de combate futurista") Then
Escudo = (200)
End If
If CC.Text = ("Desert eagle") Then
Ataque = (30)
End If
If Combo2.Text = ("Casaco de Nomex") Then
Escudo = 300
End If
If CC.Text = ("Uzi") Then
Ataque = (26)
End If
If CC.Text = ("MP5") Then
Ataque = (42)
End If
If CC.Text = ("Caçadeira") Then
Ataque = (30)
End If
If CC.Text = ("AK47") Then
Ataque = (45)
End If
If CC.Text = ("Colt M4A1") Then
Ataque = (68)
End If
If CC.Text = ("Espingarda de sniper") Then
Ataque = (110)
End If
If CC.Text = ("Raygun") Then
Ataque = (98)
End If
If CC.Text = ("BFG9000") Then
Ataque = (85)
End If
If CC.Text = ("Maquina do terror") Then
Ataque = (126)
End If
If Combo2.Text = ("Nenhum") Then
Escudo = (0)
End If
If CC.Text = ("Nenhuma") Then
Ataque = (0)
End If
If Forca.Text = (0) Then
MsgBox("Nao preencheste a força")
End If
If Inteligencia.Text = (0) Then
MsgBox("Nao preencheste a Inteligencia")
End If
If Resistencia.Text = (0) Then
MsgBox("Nao preencheste a Resistencia")
End If
If Convert.ToInt32(POWER.Text) > Assaltos Then
MsgBox("Podes atacar!")
End If
If Convert.ToInt32(POWER.Text) < Assaltos Then
MsgBox("Podes atacar")
End If
POWER.Text = (Convert.ToDouble(Resistencia.Text / 3) + Convert.ToDouble(Forca.Text / 3) + Convert.ToDouble((Inteligencia.Text) / 2 / 3)) + Ataque + Escudo

End Sub

abraços, HecKel

Guga
21-10-2006, 13:50
Mas disseram me que o Convert.ToDouble e que me estava a deixar com tantas casas decimais......
Ah e entao aquilo do "Podes atacar!" saebs alguma coisa que eu posso uzar para que resulte?

Guga
21-10-2006, 16:19
A parte das casas ja esta, mudei o POWER.text = (intel........(...) para POWER.text = Int((Intel......(...)

Agora a parte dos assaltos a dizer se pode atakar ou nao, e que e pior...........:)

HecKel
21-10-2006, 18:18
Lê o meu último post, explica-me o porquê de eu não ver a variável assaltos ser alterada naquele pedaço de código que me mostraste..., e talvez eu consiga ajudar-te :P

abraços, HecKel

Guga
21-10-2006, 18:39
Epa desculpa e que nessa altura ja tinha apagado as variações.....
Mas tava algo como
If Assaltos = "Forte" then
Assaltos = 100