📄 mod五子棋.bas
字号:
Attribute VB_Name = "Mod五子棋"
Option Explicit
Public mArray(19, 19) As Integer '记录棋盘上下子位置颜色的数组
'判断是否有人胜利
'X,Y 刚下的棋子的数组位子
'Who 是谁下的
'WhoIsWin =0 继续
' =1 黑棋赢
' =-1 白棋赢
Public Function WhoIsWin(x As Integer, y As Integer, Who As Integer) As Integer
If H(x, y, Who) >= 4 Or V(x, y, Who) >= 4 Or HV_01(x, y, Who) >= 4 Or HV_02(x, y, Who) >= 4 Then
WhoIsWin = Who
Else
WhoIsWin = 0
End If
End Function
'水平方向上的判断
Private Function H(x As Integer, y As Integer, c As Integer) As Integer
Dim i As Integer
Dim Count As Integer
Count = 0
'从落子点的左边方面统计Count
If x > 0 Then
i = 1
Do While x - i > 0 '保证数组下标不溢出
If mArray(x - i, y) = c Then '判断颜色
Count = Count + 1
i = i + 1 '继续向左移动
Else
Exit Do '立刻退出
End If
Loop
End If
'从落子点的右边方面统计Count
If x < 20 Then
i = 1
Do While x + i < 20 '保证数组下标不溢出
If mArray(x + i, y) = c Then '判断颜色
Count = Count + 1
i = i + 1 '继续向右移动
Else
Exit Do '立刻退出
End If
Loop
End If
H = Count
End Function
'垂直方向上的判断
Private Function V(x As Integer, y As Integer, c As Integer) As Integer
Dim i As Integer
Dim Count As Integer
Count = 0
'从落子点的上边方面统计Count
If y > 0 Then
i = 1
Do While y - i > 0 '保证数组下标不溢出
If mArray(x, y - i) = c Then '判断颜色
Count = Count + 1
i = i + 1 '继续向上移动
Else
Exit Do '立刻退出
End If
Loop
End If
'从落子点的下边方面统计Count
If y < 20 Then
i = 1
Do While y + i < 20 '保证数组下标不溢出
If mArray(x, y + i) = c Then '判断颜色
Count = Count + 1
i = i + 1 '继续向下移动
Else
Exit Do '立刻退出
End If
Loop
End If
V = Count
End Function
'主对角线方向上的判断
Private Function HV_01(x As Integer, y As Integer, c As Integer) As Integer
Dim i As Integer
Dim Count As Integer
Count = 0
'从落子点的左下方面统计Count
If x > 0 And y > 0 Then
i = 1
Do While x - i > 0 And y + i < 20 '保证数组下标不溢出
If mArray(x - i, y + i) = c Then '判断颜色
Count = Count + 1
i = i + 1 '继续向左下方面移动
Else
Exit Do '立刻退出
End If
Loop
End If
'从落子点的右上方面统计Count
If x < 20 And y > 0 Then
i = 1
Do While x + i < 20 And y - i > 0 '保证数组下标不溢出
If mArray(x + i, y - i) = c Then '判断颜色
Count = Count + 1
i = i + 1 '继续向右上方面移动
Else
Exit Do '立刻退出
End If
Loop
End If
HV_01 = Count
End Function
'次对角线方向上的判断
Private Function HV_02(x As Integer, y As Integer, c As Integer) As Integer
Dim i As Integer
Dim Count As Integer
Count = 0
'从落子点的左上方面统计Count
If x > 0 And y < 20 Then
i = 1
Do While x - i > 0 And y - i > 0 '保证数组下标不溢出
If mArray(x - i, y - i) = c Then '判断颜色
Count = Count + 1
i = i + 1 '继续向左上方面移动
Else
Exit Do '立刻退出
End If
Loop
End If
'从落子点的右下方面统计Count
If x < 20 And y < 20 Then
i = 1
Do While x + i < 20 And y + i < 20 '保证数组下标不溢出
If mArray(x + i, y + i) = c Then '判断颜色
Count = Count + 1
i = i + 1 '继续向右下方面移动
Else
Exit Do '立刻退出
End If
Loop
End If
HV_02 = Count
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -