2011-03-02 95 views
0

我在Visual Basic中構建了一個名爲Battleship的遊戲。我有100個按鈕(10行x 10列),我想讓用戶做的是能夠點擊一個按鈕,並且一個名爲IsCreated(這是一個布爾值)的函數對於某個按鈕變爲True。Visual Basic幫助我的遊戲

兩個問題:
1.如何創建此功能?
2.如何讓點擊的按鈕使IsCreated從true變爲false?

回答

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個按鍵...不是一個優雅的解決方案,但它會工作。

編輯:清理。

+0

好的,這有幫助。我知道它不夠優雅,但TableLayoutPanel並沒有任何幫助。感謝您的幫助,但不勝感激! – parion 2011-03-02 03:05:57

1

我會以編程方式創建按鈕並將它們添加到字典或列表中以跟蹤它們。您可能需要某種類來保存關於每個網格單元格的所有信息,而不僅僅是一組布爾值。將以下內容添加到空白的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