JASON 發問時間: 電腦與網際網路程式設計 · 1 0 年前

VB2005問題~~骰子比大小請交我我的哪裡寫錯了

Sub sim(ByVal x As Integer, ByVal y As Integer, ByVal s As Integer, ByRef z As Integer)

If rad1.Checked = True Then

z = x + y + s

End If

Select Case z

Case 10, 11, 13, 14, 16, 17

lbl4.Text &= "骰子1:" & x & vbNewLine & "骰子2:" & y & vbNewLine & "骰子3:" & s & vbNewLine & "總和:" & z & vbNewLine & "恭喜你贏了!"

Case 4, 5, 7, 8

lbl4.Text &= "骰子1:" & x & vbNewLine & "骰子2:" & y & vbNewLine & "骰子3:" & s & vbNewLine & z & vbNewLine & "恭喜你輸了!"

End Select

If rad2.Checked = True Then

z = x + y + s

End If

Select Case z

Case 10, 11, 13, 14, 16, 17

lbl4.Text &= "骰子1:" & x & vbNewLine & "骰子2:" & y & vbNewLine & "骰子3:" & s & vbNewLine & "總和:" & z & vbNewLine & "恭喜你輸了!"

Case 4, 5, 7, 8

lbl4.Text &= "骰子1:" & x & vbNewLine & "骰子2:" & y & vbNewLine & "骰子3:" & s & vbNewLine & z & vbNewLine & "恭喜你贏了!"

End Select

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

Dim t As Integer

Dim b, c, d As Integer

Randomize()

b = Rnd(10) * 6

c = Rnd(10) * 6

d = Rnd(10) * 6

sim(b, c, d, t)

我的輸出會出現2種答案!!

已更新項目:

如何做修改??

1 個解答

評分
  • 1 0 年前
    最佳解答

    你在 Sub sim 副程式中,做了兩次 Select Case z ,所以兩個答案啊!!

    2007-11-22 14:58:58 補充:

    1. 先把 z = x + y + s (應該是加總擲出的點數)移到外面,因為不論 rad1 or rad2 Checked 你都要做這件事,所以它跟哪個被點選無關。

    2. rad1 or rad2 的 Checked 決定輸贏的比較邏輯,而除非你有預設值,否則 ... 你沒有處理都未選狀況(假定 rad1 和 rad2 是在同一容器中,Checked 的值會互相引響)。

    2007-11-22 14:59:07 補充:

    3. 可以用:

    if rad1.Checked then

    Select Case z

    ....

    elseif rad2.Checked than

    Select Case z

    ....

    else

    顯示情選擇 ...

    end if

    來處理,這樣改的少一點。

    參考資料: myself
還有問題?馬上發問,尋求解答。