我在Visual Basic中構建了一個名爲Battleship的遊戲。我有100個按鈕(10行x 10列),我想讓用戶做的是能夠點擊一個按鈕,並且一個名爲IsCreated
(這是一個布爾值)的函數對於某個按鈕變爲True。Visual Basic幫助我的遊戲
兩個問題:
1.如何創建此功能?
2.如何讓點擊的按鈕使IsCreated從true變爲false?
我在Visual Basic中構建了一個名爲Battleship的遊戲。我有100個按鈕(10行x 10列),我想讓用戶做的是能夠點擊一個按鈕,並且一個名爲IsCreated
(這是一個布爾值)的函數對於某個按鈕變爲True。Visual Basic幫助我的遊戲
兩個問題:
1.如何創建此功能?
2.如何讓點擊的按鈕使IsCreated從true變爲false?
一個非常基本的方法是分配每個按鈕一個號碼&使用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個按鍵...不是一個優雅的解決方案,但它會工作。
編輯:清理。
我會以編程方式創建按鈕並將它們添加到字典或列表中以跟蹤它們。您可能需要某種類來保存關於每個網格單元格的所有信息,而不僅僅是一組布爾值。將以下內容添加到空白的form1中。
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
好的,這有幫助。我知道它不夠優雅,但TableLayoutPanel並沒有任何幫助。感謝您的幫助,但不勝感激! – parion 2011-03-02 03:05:57