Sida 1 av 1
Programmeringsproblem! [LÖST]
Postat: 18 dec 2007, 10:41
av TheOne
Har ett skolarbete som ska vara inne imon, och jag har helt kört fast på en sak!
Det är programmergingsspråket Visual Basic.NET (det kanske är som att svära i kyrkan att säga det här.

)
Joo, detta är ett kodblock som ska hålla reda på hur många gånger man klickar "fel" och när man har gjort det X-antal gånger så ska man få en "messegebox" som talar om att man dött, i detta fallet blir man hemlös (ett bostadspel)
Men det vill inte funka, och jag undrar om ni skulle vilja kolla på det
Koden ser ut som följer;
Static antaldöd, räknaner1 As Integer
'hur många liv man ska få på varje svårighetsgrad
räknaner1 = 10
If antaldöd = 1 Then
räknaner1 = räknaner1 - 1
End If
If räknaner1 = 0 Then
Timer1.Enabled = False
MsgBox("Du missade pengarna, du är nu hemlös.", MsgBoxStyle.Information, "Du är hemlös!")
End If
SV: Programmeringsproblem!
Postat: 18 dec 2007, 10:57
av Lars
Du testar om antaldöd är lika med 1, men vad är värdet på antaldöd? Var sätts det?
SV: Programmeringsproblem!
Postat: 18 dec 2007, 11:01
av TheOne
Lars skrev:
Du testar om antaldöd är lika med 1, men vad är värdet på antaldöd? Var sätts det?
antaldöd bestämms i en "combobox", som heter "Välj level" antaldöd är alltså en level, så om antaldöd = 1 betyder det att man har valt level ett. På level ett har man tio liv ( räknaner1 = 10)
Det sjuka är att level 10 funkar!! :S
Static antaldöd, räknaner10 As Integer
räknaner10 = 1
If antaldöd = 10 Then
räknaner10 = räknaner10 - 1
End If
If räknaner10 = 0 Then
Timer1.Enabled = False
MsgBox("Du missade pengarna, du är nu hemlös.", MsgBoxStyle.Information, "Du är hemlös!")
End If
DOCK är det BARA level 10 som funkar, de andra (2,4,8) funkar inte!
SV: Programmeringsproblem!
Postat: 18 dec 2007, 11:16
av Lars
Det enda tips jag kan ge är att stega igenom programmet med debuggern och kolla värdena på alla variabler, och kolla vad som händer i if-satserna.
SV: Programmeringsproblem!
Postat: 18 dec 2007, 11:30
av TheOne
Lars skrev:
Det enda tips jag kan ge är att stega igenom programmet med debuggern och kolla värdena på alla variabler, och kolla vad som händer i if-satserna.
Gjorde precis det och av någon anledning som bara gudarna vet så blir det helt fucked up här:
If antaldöd = 1 Then
räknaner1 = räknaner1 - 1
End If
Den går till: If antaldöd = 1 Then
och sedan
hoppar den över: räknaner1 = räknaner1 - 1
Mycket konstigt... -.-
Men det blir värre!
Om jag ändrar:
ComboBox1.Text = antaldöd
till:
antaldöd = 1
så stegar den igenom:
If antaldöd = 1 Then
räknaner1 = räknaner1 - 1
End If
PRECIS som den ska rad för rad.
Och sedan när jag medvetet har klickat fel 10 gånger (testade och klicka fel många fler gånger än så i ren desperation!

)
så kommer detta i alla fall inte upp:
If räknaner1 = 0 Then
Timer1.Enabled = False
MsgBox("Du missade pengarna, du är nu hemlös.", MsgBoxStyle.Information, "Du är hemlös!")
End If
utan den skiter i det fullständigt. :S
SV: Programmeringsproblem!
Postat: 18 dec 2007, 11:48
av TheOne
Jag kanske är nära källan till problmet.
Det är nämligen så att i den "combobox":en (en vanlig rullgardinsmeny!) där man väljer level. Den nollställs när man trycker fel första gången.
Verkar som om jag måste få den att komma ihåg vad den hade i menyn, det har vi inte gått igenom än, han har bara sagt hur man håller variblar kvar mellan "omgångarna" inte objekt.
Får googla då, om ingen vet?
SV: Programmeringsproblem!
Postat: 18 dec 2007, 14:18
av per9000
Jag får känslan att din kombobox visar en sträng och du jämför med en integer?
Testa att casta om den, jag vet inte hur man gör i VB.NET men i alla andra språk så gör man typ "if 1 == int(ett)"
HTH, Per
SV: Programmeringsproblem!
Postat: 18 dec 2007, 14:53
av TheOne
Det löste sig, istället för olika många liv så hoppar nu boxen omkring i rutan snabbare och snabbare. Och man har bara ett liv.
MYCKET enklare..
Men tack alla som försökte.