用于领带的井字游戏编码 [英] tic tac toe coding for tie

查看:32
本文介绍了用于领带的井字游戏编码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个井字游戏程序,我已经让一切都按照它应该的方式工作了.但是,我在使用此编码时遇到的最后一个问题是,我似乎无法弄清楚何时对其进行编码.这是我目前所拥有的.

I have a tic tac toe program and I've got everything working that way it should be. But, the one final problem I am having with this coding is that I can't seem to figure out when there is a tie how to code it. here is what i have so far.

Public Class Form1

Private turn As Integer = 1
Private play() As String = {"O", "X"}
Private board(2, 2) As String

Private Structure arrayIndex
    Dim x As Integer
    Dim y As Integer
End Structure

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    For x As Integer = 1 To 9
        Dim b As New Button With { _
            .Width = 80, _
            .Height = 80, _
            .Text = "", _
            .Location = New Point(60 + (((x - 1) Mod 3) * 80), 60 + (((x - 1) \ 3) * 80)), _
            .Tag = New arrayIndex With {.x = (x - 1) Mod 3, .y = (x - 1) \ 3}}
        Me.Controls.Add(b)
        AddHandler b.Click, AddressOf buttons_click

    Next
    Me.SetClientSizeCore(360, 360)

End Sub

Private Sub buttons_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    If DirectCast(sender, Button).Text <> "" Then Return
    DirectCast(sender, Button).Text = play(turn Mod 2)
    Dim index As arrayIndex = DirectCast(DirectCast(sender, Button).Tag, arrayIndex)
    board(index.x, index.y) = play(turn Mod 2)
    turn += 1
    winner()
End Sub

Private Sub winner()
    Dim rows(7) As String
    rows(0) = board(0, 0) & board(1, 0) & board(2, 0)
    rows(1) = board(0, 1) & board(1, 1) & board(2, 1)
    rows(2) = board(0, 2) & board(1, 2) & board(2, 2)
    rows(3) = board(0, 0) & board(0, 1) & board(0, 2)
    rows(4) = board(1, 0) & board(1, 1) & board(1, 2)
    rows(5) = board(2, 0) & board(2, 1) & board(2, 2)
    rows(6) = board(0, 0) & board(1, 1) & board(2, 2)
    rows(7) = board(2, 0) & board(1, 1) & board(0, 2)

    For x As Integer = 0 To 7
        If rows(x).Length = 3 AndAlso (rows(x)(0) = rows(x)(1) AndAlso rows(x)(0) = rows(x)(2)) Then
            If MessageBox.Show(rows(x)(0) & "'s winsssss!", "We have a winner!", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) = DialogResult.OK Then
                turn = 1
                ReDim board(2, 2)
                For Each ctrl As Control In Controls
                    ctrl.Text = ""
                Next
                Return
            Else
                Me.Close()


            End If

        End If
    Next

End Sub


End Class

推荐答案

一种方法是,如果所有空间都已满并且没有赢家,那么就会出现平局.

One way is that if all of the spaces are full and there is no winner, then there's a tie.

这篇关于用于领带的井字游戏编码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆