我正在用Visual Basic构建一个名为Battleship的游戏。我有100个按钮(10行×10列)和我希望用户做的,能够点击一个按钮,一个名为IsCreated
的函数(这是一个布尔值)对于某个按钮变为True。
两个问题:
1.如何创建此功能?
2.如何使点击的按钮让IsCreated从true转为false?
答案 0 :(得分:1)
一种非常基本的方法是为每个按钮分配一个数字和一个数字。在onClick()的函数调用中使用它。你只有一个全局的布尔数组(我用过boardPosition)
Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles button1.Click
boardPosition(1) = IsCreated(1)
End Sub
然后就是:
Protected Function IsCreated(byVal buttonNumberClicked as integer)
If boardPosition(buttonNumberClicked) Then
return true
else
return false
End If
End Function
这假设您刚刚创建了100个按钮......这不是一个优雅的解决方案,但它会起作用。
编辑:清理。
答案 1 :(得分:1)
我会以编程方式创建按钮,并将它们添加到字典或列表中以跟踪它们。您可能希望某种类能够保存有关每个网格单元的所有信息,而不仅仅是一组布尔值。将以下内容添加到空白表单1中。
Dim IsCreated(99) As Boolean
Dim Buttons As New Dictionary(Of String, Button)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For i As Integer = 0 To 99
Dim B As New Button
Me.Controls.Add(B)
B.Height = 30
B.Width = 40
B.Left = (i Mod 10) * 41
B.Top = (i \ 10) * 31
B.Text = Chr((i \ 10) + Asc("A")) & i Mod 10 + 1
Buttons.Add(B.Text, B)
B.Tag = i
AddHandler B.Click, AddressOf Button_Click
Next
End Sub
Private Sub Button_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim B As Button = sender
IsCreated(B.Tag) = True
B.BackColor = Color.Red
End Sub