2014-09-03 49 views
0

我正在嘗試使用Visual Basic創建一個Tic Tac Toe遊戲。按下按鈕後,按鈕應該先轉到「O」,然後下一個按鈕應該是「X」,但它似乎繼續放置「O」。按鈕應該每隔兩次更改文本

Dim turn As Boolean 
    turn = True 'true = X turn, false = Y turn 
    Dim b As Button 

    b = DirectCast(sender, Button) 
    If (turn) Then 
     b.Text = "O" 
    Else 
     b.Text = "X" 
     turn = Not turn <<< This seems to not to be working... 

     b.Enabled = False 
    End If 
+0

凡輪到聲明?在課堂上還是功能上?聽起來它應該是一個類/表單變量,所以每次按下按鈕時都不會重新創建。 – Capellan 2014-09-03 19:10:31

回答

3

您需要聲明的方法外turn變量,所以它是類的成員,不是每次重新創建一個局部變量。

此外,您應該在每次更改後翻轉狀態,不僅在放置X時相同,而且在禁用按鈕時也相同。

例子:

Dim turn As Boolean = True 'true = X turn, false = Y turn 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim b As Button = DirectCast(sender, Button) 

    If turn Then 
    b.Text = "O" 
    Else 
    b.Text = "X" 
    End If 

    turn = Not turn 
    b.Enabled = False 
End Sub 
+0

我在那裏看到C#的痕跡;) – 2014-09-03 19:41:22

+0

或者,如果在click處理程序外不需要'turn',它可以在其內部聲明爲'Static'變量。 – 2014-09-03 19:49:15

+1

@the_lotus由於Guffa似乎被佔用,我刪除了C#的痕跡。你也可以做到這一點) – 2014-09-03 19:56:57