2014-04-30 19 views
0

我正在爲我的介紹VB班在學校yahtzee遊戲。我已經完成了大部分的程序,並且只剩下幾套。但是,現在,我被卡在一種套裝的三種,以及四種套裝中。現在我正在研究3oak套裝。Yahtzee 3種! VB

rdb3OAK - 一個單選按鈕,如果他們打算把骰子朝3種

randnum1-5用戶將檢查 - 這五個骰子的價值觀

lbl3OAK的 - 這點獲得了標籤一類3將在

顯示這裏是我的代碼有:

 '3 of a kind 
     If rdb3OAK.Checked = True And randnum1 = randnum2 = randnum3 Then 
      lbl3OAK.Text = randnum1 + randnum2 + randnum3 + randnum4 + randnum5 
      rdb3OAK.Enabled = False 
     End If 
     If rdb3OAK.Checked = True And randnum1 = randnum2 = randnum4 Then 
      lbl3OAK.Text = randnum1 + randnum2 + randnum3 + randnum4 + randnum5 
      rdb3OAK.Enabled = False 
     End If 
     If rdb3OAK.Checked = True And randnum1 = randnum2 = randnum5 Then 
      lbl3OAK.Text = randnum1 + randnum2 + randnum3 + randnum4 + randnum5 
      rdb3OAK.Enabled = False 
     End If 
     If rdb3OAK.Checked = True And randnum1 = randnum3 = randnum4 Then 
      lbl3OAK.Text = randnum1 + randnum2 + randnum3 + randnum4 + randnum5 
      rdb3OAK.Enabled = False 
     End If 
     If rdb3OAK.Checked = True And randnum1 = randnum3 = randnum5 Then 
      lbl3OAK.Text = randnum1 + randnum2 + randnum3 + randnum4 + randnum5 
      rdb3OAK.Enabled = False 
     End If 
     If rdb3OAK.Checked = True And randnum1 = randnum4 = randnum5 Then 
      lbl3OAK.Text = randnum1 + randnum2 + randnum3 + randnum4 + randnum5 
      rdb3OAK.Enabled = False 
     End If 
     If rdb3OAK.Checked = True And randnum2 = randnum3 = randnum4 Then 
      lbl3OAK.Text = randnum1 + randnum2 + randnum3 + randnum4 + randnum5 
      rdb3OAK.Enabled = False 
     End If 
     If rdb3OAK.Checked = True And randnum2 = randnum3 = randnum5 Then 
      lbl3OAK.Text = randnum1 + randnum2 + randnum3 + randnum4 + randnum5 
      rdb3OAK.Enabled = False 
     End If 
     If rdb3OAK.Checked = True And randnum2 = randnum4 = randnum5 Then 
      lbl3OAK.Text = randnum1 + randnum2 + randnum3 + randnum4 + randnum5 
      rdb3OAK.Enabled = False 
     End If 
     If rdb3OAK.Checked = True And randnum3 = randnum4 = randnum5 Then 
      lbl3OAK.Text = randnum1 + randnum2 + randnum3 + randnum4 + randnum5 
      rdb3OAK.Enabled = False 
     End If 

有一個if語句日的每個可能的組合骰子等於相同的數字。在理論上這是有效的,但在實踐中它不適用。我沒有得到任何錯誤,所以我不知道什麼是錯的。

我是新來的編程,所以對我很好!

提供的任何幫助將不勝感激!

+0

你能解釋這個更好一點嗎?從我看到的情況來看,無論發生什麼事情,你將所有5個骰子加起來,並將rdb3OAK.Enabled設置爲False。這裏沒有任何東西會在任何情況下拋出錯誤,除非你忘記包含這段代碼? –

+0

對,因爲3oak只是查看3個骰子是否相同,然後加上所有骰子的總和。之後,我不希望rdb3oak能夠被第二次選擇,所以按鈕被禁用。如果IF的情況沒有得到滿足,那麼它跳過它並移動到下一個。我應該使用IfElse而不是單獨的IF? – jtchase08

回答

1

不幸的是,你不能這樣做「a = b = c」。你需要做「a = b和b = c」。例如,更改此:

If rdb3OAK.Checked = True And randnum1 = randnum2 = randnum3 Then 

要這樣:

If rdb3OAK.Checked = True And randnum1 = randnum2 And randnum2 = randnum3 Then 

我在VB有點生疏了,所以你也可能需要使用 「==」 代替 「=」。 (在某些語言中,「=」是賦值,「==」是比較。)

+1

從技術上講,在「if a = b = c Then」的陳述中,首先評估第一個等號後面的所有內容。也就是說,首先評估b = c。結果是真或假。所以「if」語句變成「if a = true then」或「if a = false then」。那時,比較就完成了(「是真的?」或「是假的?」),並且你得到了你的結果。而這個結果並不是你想要的! – BrettFromLA

+0

我會豎起你的評論,如果我可以(沒有足夠的代表,我猜。) 所以你說的是,它應該工作,如果我改變你的建議? – jtchase08

+0

它工作!好吧,有點。我也必須在每個之後添加一個Else,如果它沒有做任何事情,並轉到下一個If並檢查是否有效。再次感謝! – jtchase08