2014-09-03 44 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