我写过扫雷的,不完全相同,如果想要的话请给我EMail
[email protected]

解决方案 »

  1.   

    HELP ME,I NEED TOO.
    [email protected]
    MANY THANX.
      

  2.   

    张呈炜的,有人说算法不够先进,还是贴出来吧!
    Option Explicit
    Dim comable As Boolean
    Dim comturn As Boolean
    Dim blackturn As Boolean
    Dim whiteturn As Boolean
    Dim comcolor As Long
    Dim black As Long
    Dim white As Long
    Dim i As Single
    Dim j As Single
    Dim table(-5 To 20, -5 To 20) As Integer'用此二维数组表示棋盘'Private Sub restart()
    Form_Paint
    For i = 0 To 15
     For j = 0 To 15
     table(i, j) = 0
     Next j
    Next i
    black = RGB(0, 0, 0)
    white = RGB(255, 255, 255)
    If comturn = True Then Call goes(7, 7)
    End SubPrivate Sub goes(i As Single, j As Single) '电脑将子走到table(i,j)'
    If comturn = True And table(i, j) = 0 Then
    FillColor = comcolor
    FillStyle = 0
    Dim x As Single
    Dim y As Single
    x = i * 300 + 100
    y = j * 300 + 100
    Circle (x, y), 100
    comturn = False
    table(i, j) = 2
    End If
    End SubPrivate Sub about_Click()
    frmAbout.Show
    End SubPrivate Sub doubleman_Click()'双人'
    blackturn = True
    whiteturn = False
    comable = False
    comturn = False
    restart
    End SubPrivate Sub exit_Click()
    Unload Me
    End
    End SubPrivate Sub Form_Load()
    Form_Paint
    comturn = True
    End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) '人走'
    Dim a As Single
    Dim b As Single
    Dim m As Single
    Dim n As Single
    If (x - 100) Mod 300 < 150 Then
       a = x - (x - 100) Mod 300
       ElseIf (x - 100) Mod 300 > 150 Then
       a = x + 300 - (x - 100) Mod 300
    End If
    If (y - 100) Mod 300 < 150 Then
       b = y - (y - 100) Mod 300
       ElseIf (y - 100) Mod 300 > 150 Then
       b = y + 300 - (y - 100) Mod 300
    End Ifi = (a - 100) / 300
    j = (b - 100) / 300
    If (comturn = False) And (table(i, j) = 0) Then
    If blackturn = True Then
     FillColor = black
     Else
    FillColor = white
    End If
    FillStyle = 0
    Circle (a, b), 100
    table(i, j) = 1If comable = False Then
    blackturn = blackturn Xor True
    End If '双人If comable = True Then
    comturn = True
    judgeman
    comdo
    judgecom
    End If '人机对战End If
    End Sub
    Private Sub judgeman()'判断人是否获胜'
     Dim i As Single
     Dim j As Single
     For i = 0 To 15
      For j = 0 To 15
      If table(i, j) * table(i, j + 1) * table(i, j + 2) * table(i, j + 3) * table(i, j + 4) = 1 Then
          MsgBox "you win."
      ElseIf table(i, j) * table(i + 1, j) * table(i + 2, j) * table(i + 3, j) * table(i + 4, j) = 1 Then
          MsgBox "you win."
      ElseIf table(i, j) * table(i + 1, j + 1) * table(i + 2, j + 2) * table(i + 3, j + 3) * table(i + 4, j + 4) = 1 Then
          MsgBox "you win."
      ElseIf table(i, j) * table(i - 1, j + 1) * table(i - 2, j + 2) * table(i - 3, j + 3) * table(i - 4, j + 4) = 1 Then
          MsgBox "you win."
      End If
     Next j
     Next i
    End Sub
      

  3.   

    Private Sub judgecom()'判断电脑是否获胜'
    Dim i As Single
    Dim j As Single
    For i = 0 To 15
    For j = 0 To 15
    If table(i, j) * table(i, j + 1) * table(i, j + 2) * table(i, j + 3) * table(i, j + 4) = 32 Then
          MsgBox "sory,you fail."
      ElseIf table(i, j) * table(i + 1, j) * table(i + 2, j) * table(i + 3, j) * table(i + 4, j) = 32 Then
          MsgBox "sory,your fail."
      ElseIf table(i, j) * table(i + 1, j + 1) * table(i + 2, j + 2) * table(i + 3, j + 3) * table(i + 4, j + 4) = 32 Then
          MsgBox "sory,you fail."
      ElseIf table(i, j) * table(i - 1, j + 1) * table(i - 2, j + 2) * table(i - 3, j + 3) * table(i - 4, j + 4) = 32 Then
          MsgBox "sory,you fail."
    End If
    Next j
    Next i
    End SubPrivate Function wantfive(i, j, k) As Boolean '定式1'
    If table(i, j) = 0 And (table(i - 4, j) * table(i - 3, j) * table(i - 2, j) * table(i - 1, j) = k * k * k * k _
                          Or table(i - 4, j - 4) * table(i - 3, j - 3) * table(i - 2, j - 2) * table(i - 1, j - 1) = k * k * k * k _
                          Or table(i, j - 4) * table(i, j - 3) * table(i, j - 2) * table(i, j - 1) = k * k * k * k _
                          Or table(i + 1, j - 1) * table(i + 2, j - 2) * table(i + 3, j - 3) * table(i + 4, j - 4) = k * k * k * k _
                          Or table(i + 1, j) * table(i + 2, j) * table(i + 3, j) * table(i + 4, j) = k * k * k * k _
                          Or table(i + 1, j + 1) * table(i + 2, j + 2) * table(i + 3, j + 3) * table(i + 4, j + 4) = k * k * k * k _
                          Or table(i, j + 1) * table(i, j + 2) * table(i, j + 3) * table(i, j + 4) = k * k * k * k _
                          Or table(i - 1, j + 1) * table(i - 2, j + 2) * table(i - 3, j + 3) * table(i - 4, j + 4) = k * k * k * k _
                          Or table(i - 3, i) * table(i - 2, j) * table(i - 1, j) * table(i + 1, j) = k * k * k * k _
                          Or table(i - 3, j - 3) * table(i - 2, j - 2) * table(i - 1, j - 1) * table(i + 1, j + 1) = k * k * k * k _
                          Or table(i, j - 3) * table(i, j - 2) * table(i, j - 1) * table(i, j + 1) = k * k * k * k _
                          Or table(i + 1, j - 1) * table(i + 2, j - 2) * table(i + 3, j - 3) * table(i - 1, j + 1) = k * k * k * k _
                          Or table(i + 1, j) * table(i + 2, j) * table(i + 3, j) * table(i - 1, j) = k * k * k * k _
                          Or table(i + 1, j + 1) * table(i + 2, j + 2) * table(i + 3, j + 3) * table(i - 1, j - 1) = k * k * k * k _
                          Or table(i, j + 1) * table(i, j + 2) * table(i, j + 3) * table(i, j - 1) = k * k * k * k _
                          Or table(i - 1, j + 1) * table(i - 2, j + 2) * table(i - 3, j + 3) * table(i + 1, j - 1) = k * k * k * k _
                          Or table(i - 2, j) * table(i - 1, j) * table(i + 1, j) * table(i + 2, j) = k * k * k * k _
                          Or table(i-1,j-1)*table(i-2,j-2)*table(i+1,j+1)*table(i - 2, j - 2) = k * k * k * k _
                          Or table(i, j - 2) * table(i, j - 1) * table(i, j + 1) * table(i, j + 2) = k * k * k * k _
                          Or table(i + 1, j - 1) * table(i + 2, j - 2) * table(i - 1, j + 1) * table(i - 2, j + 2) = k * k * k * k _
                        ) Then wantfive = True
                        
    End Function
    Private Function wantfour(i, j, k) As Boolean'定式2'
    If table(i, j) = 0 And ((table(i - 3, j) = 0 And table(i + 2, j) = 0 And table(i - 2, j) * table(i - 1, j) * table(i + 1, j) = k * k * k) _
                         Or (table(i - 3, j - 3) = 0 And table(i + 2, j + 2) = 0 And table(i - 2, j - 2) * table(i - 1, j - 1) * table(i + 1, j + 1) = k * k * k) _
                         Or (table(i, j - 3) = 0 And table(i, j + 2) = 0 And table(i, j - 2) * table(i, j - 1) * table(i, j + 1) = k * k * k) _
                         Or (table(i + 3, j - 3) = 0 And table(i - 2, j + 2) = 0 And table(i + 2, j - 2) * table(i + 1, j - 1) * table(i - 1, j + 1) = k * k * k) _
                         Or (table(i + 3, j) = 0 And table(i - 2, j) = 0 And table(i + 2, j) * table(i + 1, j) * table(i - 1, j) = k * k * k) _
                         Or (table(i + 3, j + 3) = 0 And table(i - 2, j - 2) = 0 And table(i + 2, j + 2) * table(i + 1, j + 1) * table(i - 1, j - 1) = k * k * k) _
                         Or (table(i, j + 3) = 0 And table(i, j - 2) = 0 And table(i, j + 1) * table(i, j + 2) * table(i, j - 1) = k * k * k) _
                         Or (table(i - 3, j + 3) = 0 And table(i + 2, j - 2) = 0 And table(i - 2, j + 2) * table(i - 1, j + 1) * table(i + 1, j - 1) = k * k * k) _
                        ) Then wantfour = True
                                               
     End Function
     Private Function wantfour1(i, j, k) As Boolean'定式3'
     Dim a(0 To 7) As Single
     Dim n As Single
     a(0) = table(i - 3, j) * table(i - 2, j) * table(i - 1, j)
     a(1) = table(i - 3, j - 3) * table(i - 2, j - 2) * table(i - 1, j - 1)
     a(2) = table(i, j - 3) * table(i, j - 2) * table(i, j - 1)
     a(3) = table(i + 3, j - 3) * table(i + 2, j - 2) * table(i + 1, j - 1)
     a(4) = table(i + 3, j) * table(i + 2, j) * table(i + 1, j)
     a(5) = table(i + 1, j + 1) * table(i + 2, j + 2) * table(i + 3, j + 3)
     a(6) = table(i, j + 1) * table(i, j + 2) * table(i, j + 3)
     a(7) = table(i - 1, j + 1) * table(i - 2, j + 2) * table(i - 3, j + 3)
     Dim b(0 To 7) As Single
     b(0) = table(i + 1, j)
     b(1) = table(i + 1, j + 1)
     b(2) = table(i, j + 1)
     b(3) = table(i - 1, j + 1)
     b(4) = table(i - 1, j)
     b(5) = table(i - 1, j - 1)
     b(6) = table(i, j - 1)
     b(7) = table(i + 1, j - 1)
     For n = 0 To 7
     If table(i, j) = 0 And b(n) = 0 And a(n) = k * k * k Then
      wantfour1 = True
     End If
     Next n
      
     End Function
      

  4.   

    Private Function want231(i, j, k) As Boolean'定式4'
    Dim a(0 To 7) As Single
     a(0) = table(i - 2, j) * table(i - 1, j)
     a(1) = table(i - 2, j - 2) * table(i - 1, j - 1)
     a(2) = table(i, j - 2) * table(i, j - 1)
     a(3) = table(i + 2, j - 2) * table(i + 1, j - 1)
     a(4) = table(i + 1, j) * table(i + 2, j)
     a(5) = table(i + 1, j + 1) * table(i + 2, j + 2)
     a(6) = table(i, j + 1) * table(i, j + 2)
     a(7) = table(i - 1, j + 1) * table(i - 2, j + 2)  If table(i, j) = 0 And ((table(i - 3, j) <> 3 - k And table(i - 3, j - 3) <> 3 - k And a(0) * a(1) = k * k * k * k) _
                         Or (table(i - 3, j) <> 3 - k And table(i, j - 3) <> 3 - k And a(0) * a(2) = k * k * k * k) _
                         Or (table(i - 3, j) <> 3 - k And table(i + 3, j - 3) <> 3 - k And a(0) * a(3) = k * k * k * k) _
                         Or (table(i - 3, j) <> 3 - k And table(i + 3, j + 3) <> 3 - k And a(0) * a(5) = k * k * k * k) _
                         Or (table(i - 3, j) <> 3 - k And table(i, j + 3) <> 3 - k And a(0) * a(6) = k * k * k * k) _
                         Or (table(i - 3, j) <> 3 - k And table(i - 3, j + 3) <> 3 - k And a(0) * a(7) = k * k * k * k) _
                         Or (table(i - 3, j - 3) <> 3 - k And table(i, j - 3) <> 3 - k And a(1) * a(2) = k * k * k * k) _
                         Or (table(i - 3, j - 3) <> 3 - k And table(i + 3, j - 3) <> 3 - k And a(1) * a(3) = k * k * k * k) _
                         Or (table(i - 3, j - 3) <> 3 - k And table(i + 3, j) <> 3 - k And a(1) * a(4) = k * k * k * k) _
                         Or (table(i - 3, j - 3) <> 3 - k And table(i, j + 3) <> 3 - k And a(1) * a(6) = k * k * k * k) _
                         Or (table(i - 3, j - 3) <> 3 - k And table(i - 3, j + 3) <> 3 - k And a(1) * a(7) = k * k * k * k) _
                         Or (table(i, j - 3) <> 3 - k And table(i + 3, j - 3) <> 3 - k And a(2) * a(3) = k * k * k * k) _
                         Or (table(i, j - 3) <> 3 - k And table(i + 3, j) <> 3 - k And a(2) * a(4) = k * k * k * k) _
                         Or (table(i, j - 3) <> 3 - k And table(i + 3, j + 3) <> 3 - k And a(2) * a(5) = k * k * k * k) _
                         Or (table(i, j - 3) <> 3 - k And table(i - 3, j + 3) <> 3 - k And a(2) * a(7) = k * k * k * k) _
                         Or (table(i + 3, j - 3) <> 3 - k And table(i + 3, j) <> 3 - k And a(3) * a(4) = k * k * k * k) _
                         Or (table(i + 3, j - 3) <> 3 - k And table(i + 3, j + 3) <> 3 - k And a(3) * a(5) = k * k * k * k) _
                         Or (table(i + 3, j - 3) <> 3 - k And table(i, j + 3) <> 3 - k And a(3) * a(6) = k * k * k * k) _
                         Or (table(i + 3, j) <> 3 - k And table(i + 3, j + 3) <> 3 - k And a(4) * a(5) = k * k * k * k) _
                         Or (table(i + 3, j) <> 3 - k And table(i, j + 3) <> 3 - k And a(4) * a(6) = k * k * k * k) _
                         Or (table(i + 3, j) <> 3 - k And table(i - 3, j + 3) <> 3 - k And a(4) * a(7) = k * k * k * k) _
                         Or (table(i + 3, j + 3) <> 3 - k And table(i, j + 3) <> 3 - k And a(5) * a(6) = k * k * k * k) _
                         Or (table(i + 3, j + 3) <> 3 - k And table(i - 3, j + 3) <> 3 - k And a(5) * a(7) = k * k * k * k) _
                         Or (table(i, j + 3) <> 3 - k And table(i - 3, j + 3) <> 3 - k And a(6) * a(7) = k * k * k * k) _
                         ) Then want231 = True
     End Function
     Private Function want232(i, j, k) As Boolean'定式5'
     Dim b(0 To 3) As Single
     b(0) = table(i - 1, j) * table(i + 1, j)
     b(1) = table(i - 1, j - 1) * table(i + 1, j + 1)
     b(2) = table(i, j - 1) * table(i, j + 1)
     b(3) = table(i + 1, j - 1) * table(i - 1, j + 1)
     
      If table(i, j) = 0 And ((table(i - 2, j) <> 3 - k And table(i + 2, j) <> 3 - k And table(i - 2, j - 2) <> 3 - k And table(i + 2, j + 2) <> 3 - k And b(0) * b(1) = k * k) _
                        Or (table(i - 2, j) <> 3 - k And table(i + 2, j) <> 3 - k And table(i, j - 2) <> 3 - k And table(i, j + 2) <> 3 - k And b(0) * b(2) = k * k) _
                        Or (table(i - 2, j) <> 3 - k And table(i + 2, j) <> 3 - k And table(i + 2, j - 2) <> 3 - k And table(i - 2, j + 2) <> 3 - k And b(0) * b(3) = k * k) _
                        Or (table(i - 2, j - 2) <> 3 - k And table(i + 2, j + 2) <> 3 - k And table(i, j - 2) <> 3 - k And table(i, j + 2) <> 3 - k And b(1) * b(2) = k * k) _
                        Or (table(i - 2, j - 2) <> 3 - k And table(i + 2, j + 2) <> 3 - k And table(i + 2, j - 2) <> 3 - k And table(i - 2, j + 2) <> 3 - k And b(1) * b(3) = k * k) _
                        Or (table(i, j - 2) <> 3 - k And table(i, j + 2) <> 3 - k And table(i + 2, j - 2) <> 3 - k And table(i - 2, j + 2) <> 3 - k And b(2) * b(3) = k * k) _
     ) Then want232 = True
     End Function
    Function want233(i, j, k) As Boolean'定式6'
     Dim m As Single
     Dim n As Single
     Dim b(0 To 7) As Single
     Dim b1(0 To 7) As Single
     Dim a(0 To 7) As Single
     Dim a1(0 To 7) As Single
     b(0) = table(i - 1, j)
     b(1) = table(i - 1, j - 1)
     b(2) = table(i, j - 1)
     b(3) = table(i + 1, j - 1)
     b(4) = table(i + 1, j)
     b(5) = table(i + 1, j + 1)
     b(6) = table(i, j + 1)
     b(7) = table(i - 1, j + 1)
     b1(0) = table(i - 2, j)
     b1(1) = table(i - 2, j - 2)
     b1(2) = table(i, j - 2)
     b1(3) = table(i + 2, j - 2)
     b1(4) = table(i + 2, j)
     b1(5) = table(i + 2, j + 2)
     b1(6) = table(i, j + 2)
     b1(7) = table(i - 2, j + 2)
     a(0) = table(i - 2, j) * table(i - 1, j)
     a(1) = table(i - 2, j - 2) * table(i - 1, j - 1)
     a(2) = table(i, j - 2) * table(i, j - 1)
     a(3) = table(i + 1, j - 1) * table(i + 2, j - 2)
     a(4) = table(i + 1, j) * table(i + 2, j)
     a(5) = table(i + 1, j + 1) * table(i + 2, j + 2)
     a(6) = table(i, j + 1) * table(i, j + 2)
     a(7) = table(i - 1, j + 1) * table(i - 2, j + 2)
     a1(0) = table(i - 3, j)
     a1(1) = table(i - 3, j - 3)
     a1(2) = table(i, j - 3)
     a1(3) = table(i + 3, j - 3)
     a1(4) = table(i + 3, j)
     a1(5) = table(i + 3, j + 3)
     a1(6) = table(i, j + 3)
     a1(7) = table(i - 3, j + 3)
       For m = 0 To 3
       For n = 0 To 7
       If (b1(m) <> 3 - k And b1(m + 4) <> 3 - k And a1(n) <> 3 - k And b(m) * b(m + 4) = k * k) And n <> m And n <> m + 4 And a(n) = k * k Then
       want233 = True
       End If
       Next n
       Next m
     
    End Function
    Private Function wantthree(i As Single, j As Single, k As Single) As Boolean'定式7'
    Dim a(0 To 7) As Single
    Dim n As Single
    a(0) = table(i - 2, j) * table(i - 1, j)
     a(1) = table(i - 2, j - 2) * table(i - 1, j - 1)
     a(2) = table(i, j - 2) * table(i, j - 1)
     a(3) = table(i + 1, j - 1) * table(i + 2, j - 2)
     a(4) = table(i + 1, j) * table(i + 2, j)
     a(5) = table(i + 1, j + 1) * table(i + 2, j + 2)
     a(6) = table(i, j + 1) * table(i, j + 2)
     a(7) = table(i - 1, j + 1) * table(i - 2, j + 2)
    For n = 0 To 7
     If table(i, j) = 0 And a(n) = k * k Then
      wantthree = True
      End If
     Next n
    End Function