我最后一个检查井字游戏平局的 if 语句有什么问题?我可以使用循环吗?

What is wrong with my last if statement that checks for a draw in tic tac toe? Can I use a loop?

我正在尝试检查井字游戏中是否有平局。这是一个用户 vs 用户井字游戏,它可以正确识别获胜者。我的最后一个 if 语句有问题,我试图检查是否有平局。我能否在创建循环或检查是否没有赢家的 if 语句方面获得任何指导,那么它是否平局。请帮忙。谢谢。

Public Class Form1

Dim choice As Boolean
Dim playerXwins, playerOwins As Integer

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Panel1.Enabled = False
    Button1.Enabled = False
    Button2.Enabled = False
    Button3.Enabled = False
    Button4.Enabled = False
    Button5.Enabled = False
    Button6.Enabled = False
    Button7.Enabled = False
    Button8.Enabled = False
    Button9.Enabled = False
    ExitButton.Enabled = False

End Sub

Private Sub ExitButton_Click(sender As Object, e As EventArgs) Handles ExitButton.Click
    Me.Close()
End Sub


Private Sub PlayButton_Click(sender As Object, e As EventArgs) Handles PlayButton.Click

    PlayButton.Enabled = False
    Panel1.Enabled = True
    Button1.Enabled = True
    Button2.Enabled = True
    Button3.Enabled = True
    Button4.Enabled = True
    Button5.Enabled = True
    Button6.Enabled = True
    Button7.Enabled = True
    Button8.Enabled = True
    Button9.Enabled = True
    ExitButton.Enabled = True


End Sub

Private Sub Buttons_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click

    If choice = False Then
        CType(sender, Button).Text = "X"
        choice = True
    Else
        CType(sender, Button).Text = "O"
        choice = False
    End If
    ChoosingWinner()

End Sub

Private Sub ChoosingWinner()

    If Button1.Text = "X" And Button2.Text = "X" And Button3.Text = "X" Then
        MsgBox("Player X Won this Round")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerXwins = playerXwins + 1
        Label2.Text = playerXwins


    ElseIf Button1.Text = "X" And Button4.Text = "X" And Button7.Text = "X" Then
        MsgBox("Player X Won Round")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerXwins = playerXwins + 1
        Label2.Text = playerXwins

    ElseIf Button1.Text = "X" And Button5.Text = "X" And Button9.Text = "X" Then
        MsgBox("Player X Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerXwins = playerXwins + 1
        Label2.Text = playerXwins
    End If

    If Button2.Text = "X" And Button5.Text = "X" And Button8.Text = "X" Then
        MsgBox("Player X Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerXwins = playerXwins + 1
        Label2.Text = playerXwins
    End If

    If Button3.Text = "X" And Button6.Text = "X" And Button9.Text = "X" Then
        MsgBox("Player X Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerXwins = playerXwins + 1
        Label2.Text = playerXwins
    End If

    If Button3.Text = "X" And Button5.Text = "X" And Button7.Text = "X" Then
        MsgBox("Player X Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerXwins = playerXwins + 1
        Label2.Text = playerXwins
    End If

    If Button4.Text = "X" And Button5.Text = "X" And Button6.Text = "X" Then
        MsgBox("Player X Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerXwins = playerXwins + 1
        Label2.Text = playerXwins
    End If

    If Button7.Text = "X" And Button8.Text = "X" And Button9.Text = "X" Then
        MsgBox("Player X Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerXwins = playerXwins + 1
        Label2.Text = playerXwins
    End If

    If Button1.Text = "O" And Button2.Text = "O" And Button3.Text = "O" Then
        MsgBox("Player O Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerOwins = playerOwins + 1
        Label1.Text = playerOwins
    End If

    If Button1.Text = "O" And Button4.Text = "O" And Button7.Text = "O" Then
        MsgBox("Player O Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerOwins = playerOwins + 1
        Label1.Text = playerOwins
    End If

    If Button1.Text = "O" And Button5.Text = "O" And Button9.Text = "O" Then
        MsgBox("Player O Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerOwins = playerOwins + 1
        Label1.Text = playerOwins
    End If

    If Button2.Text = "O" And Button5.Text = "O" And Button8.Text = "O" Then
        MsgBox("Player O Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerOwins = playerOwins + 1
        Label1.Text = playerOwins
    End If


    If Button3.Text = "O" And Button6.Text = "O" And Button9.Text = "O" Then
        MsgBox("Player O Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerOwins = playerOwins + 1
        Label1.Text = playerOwins
    End If

    If Button3.Text = "O" And Button5.Text = "O" And Button7.Text = "O" Then
        MsgBox("Player O Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerOwins = playerOwins + 1
        Label1.Text = playerOwins
    End If

    If Button4.Text = "O" And Button5.Text = "O" And Button6.Text = "O" Then
        MsgBox("Player O Won!")
        Button1.Text = ""
        Button2.Text = ""
        Button3.Text = ""
        Button4.Text = ""
        Button5.Text = ""
        Button6.Text = ""
        Button7.Text = ""
        Button8.Text = ""
        Button9.Text = ""
        playerOwins = playerOwins + 1
        Label1.Text = playerOwins
    End If


    If Button7.Text = "O" And Button8.Text = "O" And Button9.Text = "O" Then
        MsgBox("Player O Won!")
        Button1.Enabled = False
        Button2.Enabled = False
        Button3.Enabled = False
        Button4.Enabled = False
        Button5.Enabled = False
        Button6.Enabled = False
        Button7.Enabled = False
        Button8.Enabled = False
        Button9.Enabled = False
        playerOwins = playerOwins + 1
        Label1.Text = playerOwins

    End If

    'checking if there is a draw?
    If Button1.Text And Button2.Text And Button3.Text And Button4.Text And Button5.Text And Button6.Text And Button7.Text And Button8.Text And Button9.Text = "X" Or "O" Then
        MsgBox("There is a Draw")
    End If
End Sub

结束Class

这行不通。这不是 vb.net 语法的工作方式。每个陈述必须 return 真或假。

If Button1.Text And Button2.Text And Button3.Text And Button4.Text And Button5.Text And Button6.Text And Button7.Text And Button8.Text And Button9.Text = "X" Or "O" Then
    MsgBox("There is a Draw")
End If

你必须做

If (Button1.Text = "O" Or Button1.Text = "X") And
   (Button2.Text = "O" Or Button2.Text = "X") And
   (Button3.Text = "O" Or Button3.Text = "X") And
   (Button4.Text = "O" Or Button4.Text = "X") And
   (Button5.Text = "O" Or Button5.Text = "X") And
   (Button6.Text = "O" Or Button6.Text = "X") And
   (Button7.Text = "O" Or Button7.Text = "X") And
   (Button8.Text = "O" Or Button8.Text = "X") And
   (Button9.Text = "O" Or Button9.Text = "X")
    MsgBox("There is a Draw")
End If