Hjälp med VB 2008 (Memoryspel)

Permalänk
Medlem

Hjälp med VB 2008 (Memoryspel)

Hej jag har gjort ett memoryspel, nu vill jag lösa de mindre problemen som ändå är svåra att lösa. Jag har ett Form med ett antal knappar från början. När jag klickar på en av dem knapparna som det står "Normal" på så skapar den 48 st dynamiska knappar och varandra knapp får en viss bild som styrs av en randommetod. Om man klickar på två stycken knappar med samma bild så blir dem båda visible = false. När alla dessa dynamiska knappar har försvunnit så kommer man tbx till form. När man klickar på "Normal" igen så har alla knappar samma bilder som dem hade innan.

Hur löser jag detta problem?
Ska jag skriva någon kod som stänger av och sätter på programmet direkt efter alla knappar är borta eller hur ska jag göra? Eller ska jag ändra koden i min randommetod?

Här får ni koden:

Dim nummer(48), r, o As Integer
Dim RND As New Random
Dim Avsluta As Boolean = False

Private Sub Randomfunk(ByVal sender As System.Object, ByVal e As System.EventArgs)
If Avsluta = False Then
If nummer(r) = nummer(o) And r <> o Then
nummer(r) = Int(RND.Next(1, 49))
o = 0
Else
If o = 48 And r <> 48 Then
o = 0
r = r + 1
ElseIf o <> 48 Then
o = o + 1
ElseIf o = 48 And r = 48 Then
Avsluta = True
End If
End If
Call Randomfunk(sender, e)
End If

End Sub

Permalänk
Medlem

du kan väll lägga till en del i sissta "elseif" som kommer göra att koden "nollställer/starta om" din random variabel?

tror det är det lättaste sättet att fixa det på... eller helt enkelt skriva in en ny random som tar vid när du ska starta spel 2, vilket i sin tur nollställer den första när du har tryckt på "normal" annars kan du nog integrera en kodrad som nollställer random innan du trycker på "normal" och ge den 1 sekund innan spelet startas.

(vet inte om det säger så mkt men klockan är sent på natten för min del )

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Rydalarn
du kan väll lägga till en del i sissta "elseif" som kommer göra att koden "nollställer/starta om" din random variabel?

tror det är det lättaste sättet att fixa det på... eller helt enkelt skriva in en ny random som tar vid när du ska starta spel 2, vilket i sin tur nollställer den första när du har tryckt på "normal" annars kan du nog integrera en kodrad som nollställer random innan du trycker på "normal" och ge den 1 sekund innan spelet startas.

(vet inte om det säger så mkt men klockan är sent på natten för min del )

Men hur ska koden se ut som nollställer?

Permalänk
Medlem

Nu är jag inte helt säker på vad din kod gör här, om du kommenterar lite i den så ska jag nog kunna hjälpa till
Lite tips dock:

Private Sub Randomfunk() ' parametrar krävs inte här

Dim nummer(48), r, o As Integer
Dim RND As New Random
Dim Avsluta As Boolean 'booleans är false som default

While Avsluta = False 'använd en while loop istället
If nummer(r) = nummer(o) And r <> o Then
nummer(r) = Int(RND.Next(0, 48)) ' här vill du ha 0-48 pga att array nummer går från 0-48 och inte 1-49
o = 0
Else
If o = 48 And r <> 48 Then
o = 0
r = r + 1
ElseIf o <> 48 Then
o = o + 1
ElseIf o = 48 And r = 48 Then
Avsluta = True
End If
End If
End While

End Sub