并且回复者还可得10分。程序实现目标:如何知道下棋者已连成五子棋盘中Chess是棋盘,一个数组Type型变量,最大下维Chess(16,16)。
Cer代表落棋者:1白方 2黑方,在棋盘中也这样表示,若棋盘Chess的某个变量为0(比如Chess(1,1).Value=0)表示该棋盘的位置还没有棋子。Rem 判断棋盘a,b位置的棋子的横、竖、交叉四方向的其中一个方向是否有连成五子,由于棋盘采用的是全盘搜索,因而只向正方向搜索。也就是说,假如搜索棋盘a位置,只搜索a、a+1、a+2,而不搜索a-1、a-2位置的棋子。
Public Function FiveLine(ByVal a As Integer, ByVal b As Integer, Cer As Byte, ByVal Cn As Byte) As Boolean
    
    Dim i As Byte, j As Byte, k As Byte
    
    Cn = Cn - 1     ''连同起使格算起的格数刚好为Cn,故此Cn要减1
    
    FiveLine = Flase    k = Chess(a, b).Chess ''记录a,b位置的棋子    If k <> Cer Then Exit Function ''当前棋盘的位置非Cer方的,不再运算    Rem 检查横方向    If a + Cn > 16 Then GoTo HengOK ''超出棋盘    For i = a To a + Cn        If Chess(i, b).Chess <> k Then k = 100: i = a + Cn    Next i    If k <> 100 Then FiveLine = True: Exit Function ''横向5个棋子完全一样,返回TrueHengOK:
    Rem 检查竖方向    If b + Cn > 16 Then GoTo ShuOK ''超出棋盘        k = Chess(a, b).Chess    For i = b To b + Cn        If Chess(a, i).Chess <> k Then k = 100: i = b + Cn ''竖向5个棋子完全一样,返回True    Next i    If k <> 100 Then FiveLine = True: Exit Function ''竖向5个棋子完全一样,返回TrueShuOK:    Rem 检查斜1方向    If a + Cn > 16 Or b + Cn > 16 Then GoTo Xie1OK ''超出棋盘    k = Chess(a, b).Chess
    
    For i = 0 To Cn        If Chess(a + i, b + i).Chess <> k Then k = 100    Next i    If k <> 100 Then FiveLine = True: Exit Function ''斜1方向5个棋子完全一样,返回TrueXie1OK:    Rem 检查斜2方向
    If a - Cn < 0 Or b + Cn > 16 Then GoTo Xie2OK ''超出棋盘        k = Chess(a, b).Chess    For i = 0 To Cn        If Chess(a - i, b + i).Chess <> k Then k = 100    Next i    If k <> 100 Then FiveLine = True: Exit Function ''斜1方向5个棋子完全一样,返回TrueXie2OK:    Rem 检查斜3方向
    If a + Cn > 16 Or b - Cn < 0 Then GoTo Xie3OK    k = Chess(a, b).Chess    For i = 0 To Cn        If Chess(a + i, b - i).Chess <> k Then k = 100    Next i    If k <> 100 Then FiveLine = True: Exit Function ''斜1方向5个棋子完全一样,返回TrueXie3OK:End Function