我正在使用Visual Basic进行学校项目(使用visual studio 2015),而且我有点卡住了。
我的目标是创建一个彩票,玩家从复选框中选择6个数字,然后他生成六个随机数(1 - 49),最后,应该比较这两个数组,结果是正确猜测数字的数量。
我将两个结果(猜测的数字,生成的数字)保存在两个不同的标签中。
复选框本身就是这样的:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
lev = 20
tt = 0
For j = 1 To 50
tt = tt + 1
n = n + 1
box(j) = New CheckBox
box(j).Name = "box(" & Str(j) & ")"
If n = 11 Then lev = lev + 110 : n = 1 : tt = 1
box(j).Left = lev
box(j).Parent = Me
box(j).Top = tt * 20
box(j).Tag = j
box(j).Text = j
box(j).Visible = True
Next
box(50).Enabled = False
End Sub
第一个标签(猜测的数字)以这种方式填充(我没有发布整个代码)
For j = 1 To 50
If box(j).Checked = True Then Label9.Text = Label9.Text + " " + box(j).Text
Next
和第二个(生成的数字)如下:
Do
rn = rg.Next(1, 50)
If Not r.Contains(rn) Then
r.Add(rn)
End If
Loop Until r.Count = 6
Label1.Text = r(0).ToString + " " + r(1).ToString + " " + r(2).ToString + " " + r(3).ToString + " " + r(4).ToString + " " + r(5).ToString
任何想法如何比较存储在这些标签中的数字并获得结果(正确猜测的数字的数量)。
提前致谢
答案 0 :(得分:0)
您可以通过将标签的Text属性拆分为字符串数组并将其转换为整数数组来比较标签中的数字。首先,虽然您的代码存在一个小问题,但会将猜测的数字添加到标签中。
For j = 1 To 50
If box(j).Checked = True Then Label9.Text = Label9.Text + " " + box(j).Text
Next
" "应该移动到行的末尾,因为此时标签将始终以空格开头,并且与下面的函数混淆。所以你应该 -
For j = 1 To 50
If box(j).Checked = True Then Label9.Text = Label9.Text + box(j).Text + " "
Next
确定。下面的函数将两个文本标签分成它们自己的数组,并循环猜测并检查生成的数字中是否包含任何数字。然后它返回匹配数。
Private Function ComparePicks() As Integer
Dim numbersMatched As Integer
Dim picks(5) As Integer
Dim generatedNumbers(5) As Integer
For i As Integer = 0 To 5
picks(i) = CInt(Split(Label9.Text, " "c)(i))
Next
For i As Integer = 0 To 5
generatedNumbers(i) = CInt(Split(Label1.Text, " "c)(i))
Next
For i As Integer = 0 To 5
If generatedNumbers.Contains(picks(i)) Then
numbersMatched += 1
End If
Next
Return numbersMatched
End Function