2017-03-14 1 views
-1

Ich habe Probleme mit meinem Code. Hier muss ich es machen, also wenn beide intNum1 & intNum2 ein Double erstellen, müssen sie neu rollen, bis es kein Double ist. Dies ist mein aktueller Code. Das Problem ist, wenn ich das Programm ausführen und sowohl intNum1 & intNum2 passieren, um auf der gleichen Nummer zu rollen, erstellen Sie das doppelte, es wird nicht automatisch neu zu rollen. Grundsätzlich sollten beide intNum nie einander gleich Ich bin sicher, es ist wahrscheinlich etwas sehr einfaches, aber jede Hilfe wäre dankbar, danke.Visual Basic ReRoll Wenn Lands auf Double

Dim randGen As New Random 
    Dim intNum1 As Integer 
    Dim intNum2 As Integer 
    Dim intTotal As Integer 
    Dim intRoll As Integer 


    intNum1 = randGen.Next(1, 7) 
    intNum2 = randGen.Next(1, 7) 


    Select Case intNum1 
     Case 1 
      PicDie1.Image = picOneDot.Image 
     Case 2 
      PicDie1.Image = picTwoDots.Image 
     Case 3 
      PicDie1.Image = picThreeDots.Image 
     Case 4 
      PicDie1.Image = picFourDots.Image 
     Case 5 
      PicDie1.Image = picFiveDots.Image 
     Case 6 
      PicDie1.Image = picSixDots.Image 
    End Select 

    Select Case intNum2 
     Case 1 
      picDie2.Image = picOneDot.Image 
     Case 2 
      picDie2.Image = picTwoDots.Image 
     Case 3 
      picDie2.Image = picThreeDots.Image 
     Case 4 
      picDie2.Image = picFourDots.Image 
     Case 5 
      picDie2.Image = picFiveDots.Image 
     Case 6 
      picDie2.Image = picSixDots.Image 
    End Select 

    Select Case intRoll 
     Case 1 
      If intNum1 = intNum2 Or 
      intNum2 = intNum1 Then 
       randGen.Next(1, 7) 
      End If 
    End Select 


    intTotal = intNum1 + intNum2 
    lblTotal.Text = intTotal.ToString 


End Sub 
+0

Willkommen bei SO! Sie beschreiben, was der Code eigentlich gut machen soll (Kudos!), Aber nicht was das * spezifische Problem ist. Eigentlich erwähnen Sie kein Problem. Gibt es eine Frage? –

+0

Ihr Code ist korrekt. Was ist das Problem hier? –

+0

Warum triggern Sie einen Zufall im Introllieren, wo in Ihrem Fall nur 1 ist? –

Antwort

0

Es gibt mehrere Probleme in Ihrem Code. Kann nicht alle unten aufgeführten Punkte in den Kommentaren enthalten, also diesen Platzhalter verwenden.

  1. Die erzeugten Zufallszahlen unterscheiden sich nicht, da Sie in der Methode Dim randGen As New Random initialisieren und diese Methode wahrscheinlich mehrmals aufgerufen wird. Siehe article.
  2. intRoll wird nie initialisiert. Es wird also immer Null sein. Daher wird Select Case intRoll niemals zu Case 1 ausgewertet.
  3. Wenn Bedingung If intNum1 = intNum2 Or intNum2 = intNum1 Then gleiche Bedingungen zweimal ausgewertet hat. If intNum1 = intNum2 Then sollte Ihren Zweck erfüllen.
  4. In der If-Bedingung, die Sie randGen.Next(1, 7) verwendet haben, ist dieser Wert niemals einer der Variablen intNum1 oder intNum2 zugewiesen. Auch wenn Sie es zugewiesen haben, müssen Sie sicherstellen, dass es nicht wieder dasselbe ist, da die Zufallszahl wieder dieselbe sein kann.
  5. Vorschlag: Entfernen Sie das Gehäuse Select und ersetzen Sie es durch If intRoll = 1 And intNum1 = intNum2 Then.
0

Wenn num1 und num2 sind die gleichen

if num1 = num2 then { 


intNum2 = randGen.Next(1, 7) 

} 
0

eine while-Schleife verwenden, die während intnum1 läuft und intnum2 gleich

‚, die Variablen initialisiert, so dass sie für den ersten Durchlauf gleich sind

Dim randGen as New Random 
Dim intNum1 as Integer = 0 
Dim intNum2 as Integer = 0 

While intNum1 = intNum2 'reroll until the are not equal 
    intNum1 = randGen.Next(1,7) 
    intNum2 = randGen.Next(1,7) 
End While 

'process your select case to set your images based on their values