用于领带的井字游戏编码 [英] tic tac toe coding for tie
本文介绍了用于领带的井字游戏编码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个井字游戏程序,我已经让一切都按照它应该的方式工作了.但是,我在使用此编码时遇到的最后一个问题是,我似乎无法弄清楚何时对其进行编码.这是我目前所拥有的.
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屋!
查看全文