Как я могу проверить, нет ли победителя в игре Tic Tac Toe Visual Basic - PullRequest
0 голосов
/ 29 апреля 2018

Это игра пользователя против пользователя Tic Tac Toe; Как я могу реализовать цикл, чтобы проверить, есть ли TIE в игре вместо использования операторов if / else?

Если нет, есть ли способ сделать этот код менее длинным с помощью циклов?

Пока это мой код. Игра точно проверяет, есть ли победитель, но не знает, когда нет победителя.

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.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

    End Sub

End Class

1 Ответ

0 голосов
/ 29 апреля 2018

Превратите все ваши If в структуру If-Elif, а в конечном Elif (после всех проверок, чтобы увидеть, выиграл ли кто-то), проверьте, все ли кнопки были использованы, и если есть, то есть галстук.

...