摘要:[新手上路] OX小遊戲
判斷勝利的方式很笨,適用字串在判斷的,沒辦法,功力趨近於零,想不到其他方法了!
圈叉按鈕.VB
1
Public Class 圈叉按鈕
2
Inherits Windows.Forms.Button
3
Public Shared 圈叉判斷 As Boolean = True
4
Public Sub New()
5
MyBase.New()
6
End Sub
7
End Class
Public Class 圈叉按鈕2
Inherits Windows.Forms.Button3
Public Shared 圈叉判斷 As Boolean = True4
Public Sub New()5
MyBase.New()6
End Sub7
End Class
FORM1.VB
001
Public Class Form1
002
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
003
Dim bb As 圈叉按鈕
004
圈叉按鈕.圈叉判斷 = True
005
For i As Integer = 0 To 2
006
For j As Integer = 0 To 2
007
bb = New 圈叉按鈕
008
With bb
009
.Size = New Size(100, 100)
010
.Left = i * 100
011
.Top = j * 100
012
.Text = ""
013
.Font = New Font("新細明體", 48)
014
End With
015
AddHandler bb.MouseDown, AddressOf 按下按鈕
016
Me.Controls.Add(bb)
017
Next
018
Next
019
End Sub
020
Private Sub 按下按鈕(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
021
If CType(sender, Button).Text <> "" Then
022
Exit Sub
023
End If
024
If e.Button = Windows.Forms.MouseButtons.Left Then '左鍵
025
If 圈叉按鈕.圈叉判斷 = True Then
026
CType(sender, Button).Text = "O"
027
圈叉按鈕.圈叉判斷 = False
028
Else
029
CType(sender, Button).Text = "X"
030
圈叉按鈕.圈叉判斷 = True
031
End If
032
033 End If
034
將字串填入陣列然後判斷勝利()
035
End Sub
036
Private Sub 將字串填入陣列然後判斷勝利()
037
Dim o As Object
038
Dim x(9) As String
039
Dim bb As Button
040
Dim i, j As Integer
041
For Each o In Me.Controls
042
If TypeOf o Is Button Then
043
bb = CType(o, Button)
044
If bb.Left < 400 Then
045
x(i) = bb.Text
046
i += 1
047
End If
048
End If
049
Next
050
If x(0) <> "" And ((x(0) = x(3) And x(3) = x(6)) Or (x(0) = x(1) And x(1) = x(2)) Or (x(0) = x(4) And x(4) = x(8))) Then
051
宣告勝利(x(0))
052
053 ElseIf x(3) <> "" And x(3) = x(4) And x(4) = x(5) Then
054
宣告勝利(x(3))
055
056 ElseIf x(6) <> "" And x(6) = x(7) And x(7) = x(8) Then
057
宣告勝利(x(6))
058
059 ElseIf x(1) <> "" And x(1) = x(4) And x(4) = x(7) Then
060
宣告勝利(x(1))
061
062 ElseIf x(2) <> "" And (x(2) = x(5) And x(5) = x(8) Or x(2) = x(4) And x(4) = x(6)) Then
063
宣告勝利(x(2))
064
Else
065
For k As Integer = 0 To 8
066
If x(k) <> "" Then
067
j += 1
068
End If
069
Next
070
End If
071
If j = 9 Then
072
MsgBox("平手", MsgBoxStyle.OkOnly)
073
If CBool(MsgBoxResult.Ok) Then
074
清除()
075
End If
076
End If
077
End Sub
078
Private Sub 宣告勝利(ByVal a As String)
079
If a = "O" Then
080
MsgBox("O贏了", MsgBoxStyle.OkOnly)
081
ElseIf a = "X" Then
082
MsgBox("X贏了", MsgBoxStyle.OkOnly)
083
End If
084
If CBool(MsgBoxResult.Ok) Then
085
清除()
086
End If
087
End Sub
088
Private Sub 清除()
089
Dim o As Object
090
Dim bb As Button
091
For Each o In Me.Controls
092
If TypeOf o Is Button Then
093
bb = CType(o, Button)
094
If bb.Left < 400 Then
095
bb.Text = ""
096
End If
097
End If
098
Next
099
圈叉按鈕.圈叉判斷 = True
100
End Sub
101
End Class
102
Public Class Form1002
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load003
Dim bb As 圈叉按鈕004
圈叉按鈕.圈叉判斷 = True005
For i As Integer = 0 To 2006
For j As Integer = 0 To 2007
bb = New 圈叉按鈕008
With bb009
.Size = New Size(100, 100)010
.Left = i * 100011
.Top = j * 100012
.Text = ""013
.Font = New Font("新細明體", 48)014
End With015
AddHandler bb.MouseDown, AddressOf 按下按鈕016
Me.Controls.Add(bb)017
Next018
Next019
End Sub020
Private Sub 按下按鈕(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)021
If CType(sender, Button).Text <> "" Then022
Exit Sub023
End If024
If e.Button = Windows.Forms.MouseButtons.Left Then '左鍵025
If 圈叉按鈕.圈叉判斷 = True Then026
CType(sender, Button).Text = "O"027
圈叉按鈕.圈叉判斷 = False028
Else029
CType(sender, Button).Text = "X"030
圈叉按鈕.圈叉判斷 = True031
End If032

033 End If
034
將字串填入陣列然後判斷勝利()035
End Sub036
Private Sub 將字串填入陣列然後判斷勝利()037
Dim o As Object038
Dim x(9) As String039
Dim bb As Button040
Dim i, j As Integer041
For Each o In Me.Controls042
If TypeOf o Is Button Then043
bb = CType(o, Button)044
If bb.Left < 400 Then045
x(i) = bb.Text046
i += 1047
End If048
End If049
Next050
If x(0) <> "" And ((x(0) = x(3) And x(3) = x(6)) Or (x(0) = x(1) And x(1) = x(2)) Or (x(0) = x(4) And x(4) = x(8))) Then051
宣告勝利(x(0))052

053 ElseIf x(3) <> "" And x(3) = x(4) And x(4) = x(5) Then
054
宣告勝利(x(3))055

056 ElseIf x(6) <> "" And x(6) = x(7) And x(7) = x(8) Then
057
宣告勝利(x(6))058

059 ElseIf x(1) <> "" And x(1) = x(4) And x(4) = x(7) Then
060
宣告勝利(x(1))061

062 ElseIf x(2) <> "" And (x(2) = x(5) And x(5) = x(8) Or x(2) = x(4) And x(4) = x(6)) Then
063
宣告勝利(x(2))064
Else065
For k As Integer = 0 To 8066
If x(k) <> "" Then067
j += 1068
End If069
Next070
End If071
If j = 9 Then072
MsgBox("平手", MsgBoxStyle.OkOnly)073
If CBool(MsgBoxResult.Ok) Then074
清除()075
End If076
End If077
End Sub078
Private Sub 宣告勝利(ByVal a As String)079
If a = "O" Then080
MsgBox("O贏了", MsgBoxStyle.OkOnly)081
ElseIf a = "X" Then082
MsgBox("X贏了", MsgBoxStyle.OkOnly)083
End If084
If CBool(MsgBoxResult.Ok) Then085
清除()086
End If087
End Sub088
Private Sub 清除()089
Dim o As Object090
Dim bb As Button091
For Each o In Me.Controls092
If TypeOf o Is Button Then093
bb = CType(o, Button)094
If bb.Left < 400 Then095
bb.Text = ""096
End If097
End If098
Next099
圈叉按鈕.圈叉判斷 = True100
End Sub101
End Class102
Private
Private