2017-03-14 12 views
-1

私のコードに問題があります。ここで私はそれを作る必要がありますので、両方の場合intNum1 & intNum2二重を作成するには、それらが二重にならないようにする必要があります。これは私の現在のコードです。問題は、私がプログラムを実行すると、両方のintNum1 & intNum2は、自動的にリローされない倍を作成する同じ番号でロールバックすることです。基本的に両方のintNumは決してお互いに等しいべきではありません 私は確かに何か非常に簡単ですが、どんな助けもありがとうございます。ビジュアルベーシックReRoll Double on Lands

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

ようこそ!あなたは、コードがかなりうまくやっていると考えている(賞賛!)が、*特定の問題*が何であるかは説明していません。実際にはあなたは*どんな問題も言及していません。質問はありますか? –

+0

あなたのコードは正しいです。ここで何が問題なの? –

+0

なぜあなたはあなたのケースで1つしかないイントロールでランダムにトリガーしていますか? –

答えて

0

コードに複数の問題があります。このプレースホルダを使用すると、コメントに以下のすべての点を含めることはできません。あなたがこの方法でDim randGen As New Randomを初期化されており、おそらくこのメソッドは複数回呼び出されるようにして生成

  1. 乱数は異なることはありません。 articleを参照してください。
  2. intRollは初期化されません。したがって、常にゼロになります。したがって、Select Case intRollは決してCase 1と評価されません。
  3. 条件If intNum1 = intNum2 Or intNum2 = intNum1 Thenに同じ条件が2回評価されている場合。 If intNum1 = intNum2 Thenはあなたの目的に合っているはずです。
  4. If条件でrandGen.Next(1, 7)を使用した場合、この値は決して任意の変数intNum1またはintNum2に割り当てられません。たとえそれが割り当てられていても、乱数と同じではないことを再度確認する必要があります。
  5. 提案:Selectケースを取り外し、If intRoll = 1 And intNum1 = intNum2 Thenと交換してください。
0

NUM1とNUM2はintnum1とintnum2が等しい

は、「彼らは

最初の実行のために等しくなるように変数を初期化している間に実行whileループを使用し
0

同じ

if num1 = num2 then { 


intNum2 = randGen.Next(1, 7) 

} 
ある場合
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 
関連する問題