Programmeringsproblem! [LÖST]

Här diskuteras programmering och utveckling
Användarvisningsbild
TheOne
Inlägg: 743
Blev medlem: 21 sep 2006, 08:25
Ort: Kristianstads Kommun

Programmeringsproblem! [LÖST]

Inlägg 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
Senast redigerad av 1 TheOne, redigerad totalt 18 gånger.
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

SV: Programmeringsproblem!

Inlägg av Lars »

Du testar om antaldöd är lika med 1, men vad är värdet på antaldöd? Var sätts det?
Användarvisningsbild
TheOne
Inlägg: 743
Blev medlem: 21 sep 2006, 08:25
Ort: Kristianstads Kommun

SV: Programmeringsproblem!

Inlägg 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!
Senast redigerad av 1 TheOne, redigerad totalt 18 gånger.
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

SV: Programmeringsproblem!

Inlägg 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.
Användarvisningsbild
TheOne
Inlägg: 743
Blev medlem: 21 sep 2006, 08:25
Ort: Kristianstads Kommun

SV: Programmeringsproblem!

Inlägg 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! :P

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
Senast redigerad av 1 TheOne, redigerad totalt 18 gånger.
Användarvisningsbild
TheOne
Inlägg: 743
Blev medlem: 21 sep 2006, 08:25
Ort: Kristianstads Kommun

SV: Programmeringsproblem!

Inlägg 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?
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

SV: Programmeringsproblem!

Inlägg 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
--
Per Erik Strandberg
Yet Another IT Consultant
Användarvisningsbild
TheOne
Inlägg: 743
Blev medlem: 21 sep 2006, 08:25
Ort: Kristianstads Kommun

SV: Programmeringsproblem!

Inlägg 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.
Skriv svar

Återgå till "Programmering och webbdesign"