该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
做过一次联网对战的五子棋,并不难
发一下胜局检查的代码(调用CheckIfWin,x、y 为新子坐标,Col 为玩家序号)
Private Function CheckIfWin(x As Integer, y As Integer, Col As Integer) As Boolean
Dim i As Long, j As Long
For i = -1 To 1
If CheckLine(x, y, 1, i, Col) Then MsgBox LblPlayer(Col).Caption & " Win!", , "胜利": Over: CheckIfWin = True: Exit Function
Next
If CheckLine(x, y, 0, 1, Col) Then MsgBox LblPlayer(Col).Caption & " Win!", , "胜利": Over: CheckIfWin = True: Exit Function
End Function
Private Function CheckLine(x As Integer, y As Integer, x1 As Long, y1 As Long, Col As Integer) As Boolean
Dim i As Long, j As Long
For i = 1 To 4
If GetCH(x + x1 * i, y + y1 * i) <> Col Then Exit For
Next
For j = -1 To -4 Step -1
If GetCH(x + x1 * j, y + y1 * j) <> Col Then Exit For
Next
CheckLine = (i - j > 5)
End Function
Private Function GetCH(x As Integer, y As Integer) As Integer
If x >= 0 And x <= 19 And y >= 0 And y <= 19 Then GetCH = Ch(x, y)
End Function