亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vbwuziqi.txt

?? VB五子棋,棋盤和棋子需要的化電子郵箱告訴我!
?? TXT
字號:


'五子棋程序 人機對戰版本
'需要2個Label控件   2個CommandButton控件

Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long

'Dim PlayStep() As String       '記錄棋譜的數組
'Dim Label2Cap As String
Private Const BoxL As Single = 50, BoxT As Single = 50, BoxW As Single = 25, BoxN As Integer = 18

Dim Table() As Long             '棋盤(0-BoxN,0-BoxN)     0-空 1-黑子 2-白子
Dim PsCore() As Long            '定義當前玩家桌面空格的分數
Dim CsCore() As Long            '定義當前電腦桌面空格的分數
Dim pWin() As Boolean           '定義玩家的獲勝組合
Dim cWin() As Boolean           '定義電腦的獲勝組合
Dim pFlag() As Boolean          '定義玩家的獲勝組合標志
Dim cFlag() As Boolean          '定義電腦的獲勝組合標志
Dim ThePlayFlag As Boolean      '定義游戲有效標志









Private Sub Command1_Click()
     If Not ThePlayFlag Then Call InitPlayEnvironment: Exit Sub
     If MsgBox("本局還沒有下完,是否重新開始?(Y/N)", vbYesNo) = vbNo Then Exit Sub
     Call InitPlayEnvironment
End Sub








Private Sub Command2_Click()
     End
End Sub

Private Sub Form_Load()
   Dim i As Long, lw As Long, lh As Long
     'Label2Cap = "000   黑方    行 00    列 00"
     Me.Width = 10815: Me.Height = 8040: Me.Caption = "五子棋 - 人機對戰": Me.Show
     lw = Me.Width \ Screen.TwipsPerPixelX: lh = Me.Height \ Screen.TwipsPerPixelY
     SetWindowRgn Me.hWnd, CreateRoundRectRgn(0, 0, lw, lh, 60, 60), True
     With Label1
        .Alignment = vbCenter: .FontSize = 12: .FontBold = True
        .ForeColor = vbRed: .BackStyle = 0: .AutoSize = True: .Move 8910, 510
     End With
     Label2.AutoSize = True: Label2.WordWrap = True
     Label2.BackStyle = 0: Label2.Move 8040, 1050, 2280
     Command1.Move 8025, 7035, 1020, 435: Command1.Caption = "再來一局"
     Command2.Move 9300, 7035, 1020, 435: Command2.Caption = "不玩了"
     Call DrawChessBoard: Me.FillStyle = 0: Call InitPlayEnvironment
End Sub



Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
     End
End Sub











Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Dim iRow As Long, iCol As Long, i As Long, k As Long, t As String
     If Not ThePlayFlag Then Exit Sub
     If Button = vbLeftButton Then    '左鍵下棋
        iRow = -1: iCol = -1
        For i = 0 To BoxN     '鼠標必須落在交叉點 半徑10以內 若是則給出行列號
           If (Y + 10) > (BoxT + i * BoxW) And (Y - 10) <= (BoxT + i * BoxW) Then iRow = i
           If (X + 10) > (BoxL + i * BoxW) And (X - 10) <= (BoxL + i * BoxW) Then iCol = i
        Next
        If (iRow = -1) Or (iCol = -1) Then Beep: Exit Sub
        If Table(iCol, iRow) > 0 Then Exit Sub
        Table(iCol, iRow) = 2: Label1.Caption = "下一步 黑方"
        Me.FillColor = vbWhite: Me.Circle (iCol * BoxW + BoxT, iRow * BoxW + BoxL), 8
        For i = 0 To UBound(cWin, 3)
           If cWin(iCol, iRow, i) = True Then cFlag(i) = False
        Next
        Call CheckWin: Call DianNao    '檢查當前玩家是否獲勝 調用電腦算法
     End If
End Sub











Public Sub InitPlayEnvironment()
'*****************************************************************************
' 模塊名稱: InitPlayEnvironment   [初始化過程]
'
' 描述:   1. 設置背景音樂。               2. 設置游戲狀態有效。
'         3. 初始化游戲狀態標簽。         4. 直接指定電腦的第一步走法。
'         5. 初始化基本得分桌面。         6. 電腦和玩家獲勝標志初始化。
'         7. 初始化所有獲勝組合。         8. 重新設定玩家的獲勝標志。
'*****************************************************************************
   Dim i As Long, j As Long, m As Long, n As Long

     ThePlayFlag = True: Label1.Caption = "下一步 白方": Label2.Caption = ""
     Me.FillColor = vbBlack: Me.FillStyle = 0: Me.AutoRedraw = True
     Me.Cls: Me.Circle (9 * BoxW + BoxL, 9 * BoxW + BoxT), 8
     ReDim Table(0 To BoxN, 0 To BoxN) As Long
     ReDim pFlag(NumsWin(BoxN + 1) - 1) As Boolean
     ReDim cFlag(UBound(pFlag)) As Boolean
     ReDim PsCore(BoxN, BoxN) As Long, CsCore(BoxN, BoxN) As Long
     ReDim pWin(BoxN, BoxN, UBound(pFlag)) As Boolean
     ReDim cWin(BoxN, BoxN, UBound(pFlag)) As Boolean
    
     For i = 0 To UBound(pFlag): pFlag(i) = True: cFlag(i) = True: Next
     Table(9, 9) = 1     '假定電腦先手 并下了(9, 9)位 將其值設為1
     '******** 初始化獲勝組合 ****************************************
     For i = 0 To BoxN: For j = 0 To BoxN - 4
        For m = 0 To 4
           pWin(j + m, i, n) = True: cWin(j + m, i, n) = True
        Next
        n = n + 1
     Next: Next
     For i = 0 To BoxN: For j = 0 To BoxN - 4
        For m = 0 To 4
           pWin(i, j + m, n) = True: cWin(i, j + m, n) = True
        Next
        n = n + 1
     Next: Next
     For i = 0 To BoxN - 4: For j = 0 To BoxN - 4
        For m = 0 To 4
           pWin(j + m, i + m, n) = True: cWin(j + m, i + m, n) = True
        Next
        n = n + 1
     Next: Next
     For i = 0 To BoxN - 4: For j = BoxN To 4 Step -1
        For m = 0 To 4
           pWin(j - m, i + m, n) = True: cWin(j - m, i + m, n) = True
        Next
        n = n + 1
     Next: Next
     '******** 初始化獲勝組合結束 *************************************
     For i = 0 To UBound(pWin, 3) '由于電腦已下了(9, 9)位 所以需要重新設定玩家的獲勝標志
         If pWin(9, 9, i) = True Then pFlag(i) = False
     Next
     End Sub
















Public Function DrawChessBoard() As Long
'容器的(BoxL, BoxT)為左上角坐標畫一個 BoxN*BoxN, 每格邊長為 BoxW 象素的棋盤
   Dim i As Long, j As Long, cx As Long, cy As Long
     Me.ScaleMode = 3: Me.FillStyle = 1: Me.AutoRedraw = True: Me.Cls
     For i = 0 To BoxN   '畫棋盤
        Me.Line (BoxL + i * BoxW, BoxT)-(BoxL + i * BoxW, BoxT + BoxN * BoxW)
        Me.Line (BoxL, BoxT + i * BoxW)-(BoxL + BoxN * BoxW, BoxT + i * BoxW)
        Me.CurrentX = BoxL + i * BoxW - IIf(i > 9, 6, 2)
        Me.CurrentY = BoxT - 20: Me.Print Format(i)
        Me.CurrentX = BoxL - IIf(i > 9, 23, 20)
        Me.CurrentY = BoxT + i * BoxW - 6: Me.Print Format(i)
     Next
     For i = 3 To 16 Step 6: For j = 3 To 16 Step 6   '畫小標志
        cx = BoxL + j * BoxW - 3: cy = BoxT + i * BoxW - 3
        Me.Line (cx, cy)-(cx + 6, cy + 6), , B
     Next: Next
     Me.AutoRedraw = False: Set Me.Picture = Me.Image
End Function









Public Sub CheckWin()
'*****************************************************************************
' 模塊名稱:   CheckWin    [獲勝檢查算法]
'
' 描述:    1. 檢查是否和棋。   2. 檢查電腦是否獲勝。    3. 檢查玩家是否獲勝。
'*****************************************************************************
   Dim i As Long, j As Long, k As Long, m As Long, n As Long
   Dim cA As Long, pA As Long, cN As Long
    
     For i = 0 To UBound(cFlag): cN = IIf(cFlag(i) = False, cN + 1, cN): Next
    
     If cN = UBound(cFlag) - 1 Then   '設定和棋規則
        Label1.Caption = "雙方和棋!": ThePlayFlag = False: Exit Sub
     End If
     For i = 0 To UBound(cFlag)       '檢查電腦是否獲勝
        If cFlag(i) = True Then
           cA = 0: For j = 0 To BoxN: For k = 0 To BoxN
              If Table(j, k) = 1 And cWin(j, k, i) = True Then cA = cA + 1
           Next: Next
           If cA = 5 Then Label1.Caption = "電腦獲勝!": ThePlayFlag = False: Exit Sub
        End If
     Next
     For i = 0 To UBound(pFlag)       '檢查玩家是否獲勝
        If pFlag(i) = True Then
           pA = 0: For j = 0 To BoxN: For k = 0 To BoxN
              If Table(j, k) = 2 And pWin(j, k, i) = True Then pA = pA + 1
           Next: Next
           If pA = 5 Then Label1.Caption = "玩家獲勝!": ThePlayFlag = False: Exit Sub
        End If
     Next
End Sub











Public Sub DianNao()
'*****************************************************************************
' 模塊名稱:   DianNao      [電腦算法]

' 描述:    1. 初始化賦值系統。    2. 賦值加強算法。      3. 計算電腦和玩家的最佳攻擊位。
'          4. 比較電腦和玩家的最佳攻擊位并決定電腦的最佳策略。    5. 執行檢查獲勝函數。
'*****************************************************************************
   Dim i As Long, j As Long, k As Long, m As Long, n As Long
   Dim Dc As Long, cAb As Long, pAb As Long

     ReDim PsCore(BoxN, BoxN) As Long, CsCore(BoxN, BoxN) As Long     '初始化賦值數組
    
     '******** 電腦加強算法 ********
     For i = 0 To UBound(cFlag)
        If cFlag(i) = True Then
           cAb = 0
           For j = 0 To BoxN: For k = 0 To BoxN
              If Table(j, k) = 1 And cWin(j, k, i) = True Then cAb = cAb + 1
           Next: Next
           Select Case cAb
              Case 3
                 For m = 0 To BoxN: For n = 0 To BoxN
                    If Table(m, n) = 0 And cWin(m, n, i) = True Then CsCore(m, n) = CsCore(m, n) + 5
                 Next: Next
              Case 4
                 For m = 0 To BoxN: For n = 0 To BoxN
                    If Table(m, n) = 0 And cWin(m, n, i) = True Then
                       Table(m, n) = 1: Label1.Caption = "下一步 白方"
                       Me.FillColor = vbBlack: Me.Circle (m * BoxW + BoxL, n * BoxW + BoxT), 8
                       For Dc = 0 To UBound(pWin, 3)
                          If pWin(m, n, Dc) = True Then pFlag(Dc) = False: Call CheckWin: Exit Sub
                       Next
                    End If
                 Next: Next
           End Select
        End If
     Next

     For i = 0 To UBound(pFlag)
        If pFlag(i) = True Then
           pAb = 0
           For j = 0 To BoxN: For k = 0 To BoxN
              If Table(j, k) = 2 And pWin(j, k, i) = True Then pAb = pAb + 1
           Next: Next
           Select Case pAb
              Case 3
                 For m = 0 To BoxN: For n = 0 To BoxN
                    If Table(m, n) = 0 And pWin(m, n, i) = True Then PsCore(m, n) = PsCore(m, n) + 30
                 Next: Next
              Case 4
                 For m = 0 To BoxN: For n = 0 To BoxN
                    If Table(m, n) = 0 And pWin(m, n, i) = True Then
                       Table(m, n) = 1: Label1.Caption = "下一步 白方"
                       Me.FillColor = vbBlack: Me.Circle (m * BoxW + BoxL, n * BoxW + BoxT), 8
                       For Dc = 0 To UBound(pWin, 3)
                          If pWin(m, n, Dc) = True Then pFlag(Dc) = False: Call CheckWin: Exit Sub
                       Next
                    End If
                  Next: Next
           End Select
        End If
     Next
     '******** 電腦加強算法結束 ********











     '******** 賦值系統 ****************
     For i = 0 To UBound(cFlag)
        If cFlag(i) = True Then
           For j = 0 To BoxN: For k = 0 To BoxN
              If (Table(j, k) = 0) And cWin(j, k, i) Then
                 For m = 0 To BoxN: For n = 0 To BoxN
                    If (Table(m, n) = 1) And cWin(m, n, i) Then CsCore(j, k) = CsCore(j, k) + 1
                 Next: Next
              End If
           Next: Next
        End If
     Next
        
     For i = 0 To UBound(pFlag)
        If pFlag(i) = True Then
           For j = 0 To BoxN: For k = 0 To BoxN
              If (Table(j, k) = 0) And pWin(j, k, i) Then
                 For m = 0 To BoxN: For n = 0 To BoxN
                    If (Table(m, n) = 2) And pWin(m, n, i) Then PsCore(j, k) = PsCore(j, k) + 1
                 Next: Next
              End If
           Next: Next
        End If
     Next
     '******** 賦值系統結束 ************










     '******** 分值比較算法 ************
   Dim a As Long, b As Long, c As Long, d As Long
   Dim cS As Long, pS As Long

     For i = 0 To BoxN: For j = 0 To BoxN
        If CsCore(i, j) > cS Then cS = CsCore(i, j): a = i: b = j
     Next: Next
     For i = 0 To BoxN: For j = 0 To BoxN
        If PsCore(i, j) > pS Then pS = PsCore(i, j): c = i: d = j
     Next: Next
    
     If cS > pS Then
        Table(a, b) = 1: Label1.Caption = "下一步 白方"
        Me.FillColor = vbBlack: Me.Circle (a * BoxW + BoxL, b * BoxW + BoxT), 8
        For i = 0 To UBound(pWin, 3)
           If pWin(a, b, i) = True Then pFlag(i) = False
        Next
     Else
        Table(c, d) = 1: Label1.Caption = "下一步 白方"
        Me.FillColor = vbBlack: Me.Circle (c * BoxW + BoxL, d * BoxW + BoxL), 8
        For i = 0 To UBound(pWin, 3)
           If pWin(c, d, i) = True Then pFlag(i) = False
        Next
     End If
     '******** 分值比較算法結束 ********
        
     Call CheckWin

End Sub














Public Function NumsWin(ByVal n As Long) As Long
'根據輸入的棋盤布局 n*n   計算總共有多少種獲勝組合
'假定棋盤為 10 * 10 相應的棋盤數組就是 Table(9, 9)
'水平方向 每一列獲勝組合是6 共10列 6*10=60
'垂直方向 每一行獲勝組合是6 共10行 8*10=60
'正對角線方向 6 + (5 + 4 + 3 + 2 + 1) * 2 = 36
'反對角線方向 6 + (5 + 4 + 3 + 2 + 1) * 2 = 36
'總的獲勝組合數為 60 + 60 + 36 + 36 = 192
   Dim i As Long, t As Long
     For i = n - 5 To 1 Step -1: t = t + i: Next
     NumsWin = 2 * (2 * t + n - 4) + 2 * n * (n - 4)

 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线不卡| 一区二区三区蜜桃| 欧美一级电影网站| 欧美一区二区三级| 精品成人一区二区三区四区| 日韩免费视频线观看| 欧美tickle裸体挠脚心vk| 精品国偷自产国产一区| 玉米视频成人免费看| 玉米视频成人免费看| 国产一区二区网址| 国产精品一区二区男女羞羞无遮挡| 国产乱码精品一区二区三 | 夫妻av一区二区| 韩国毛片一区二区三区| 国产大陆精品国产| 欧美亚洲精品一区| 日韩一区二区三区精品视频| 一区二区视频在线看| 国产成人午夜精品5599| 精品久久久久久最新网址| 亚洲国产综合视频在线观看| 麻豆精品一区二区综合av| 国产麻豆精品在线| 欧美成人一区二区三区片免费| 亚洲国产综合在线| 欧美日韩一区二区在线视频| 久久免费国产精品| 亚洲一线二线三线视频| 国产一区二区在线观看视频| 欧美一区二区三区免费| 日本不卡一区二区三区| 免费人成精品欧美精品| 欧美挠脚心视频网站| 久久久久久日产精品| 国产成人免费xxxxxxxx| 欧美国产成人在线| 久久精品国产亚洲a| 色综合天天综合给合国产| 日韩欧美电影在线| 狠狠色2019综合网| 国产日韩一级二级三级| 麻豆成人综合网| 精品国产一区二区三区久久影院| 久久国产夜色精品鲁鲁99| 精品第一国产综合精品aⅴ| 精品一区二区三区在线观看国产| 欧美三日本三级三级在线播放| 亚洲成人手机在线| 91色.com| 国产网站一区二区| 久久av资源网| 国产精品毛片高清在线完整版| 久久国内精品视频| 国产精品色噜噜| 欧美日韩精品系列| 乱中年女人伦av一区二区| 国产亚洲欧美在线| 色就色 综合激情| 成人免费在线播放视频| 欧美精品 日韩| 夜夜亚洲天天久久| 欧美一区中文字幕| 欧美三级三级三级爽爽爽| 亚洲成人精品在线观看| 久久久久久一二三区| 色天天综合色天天久久| 国产精品乱码妇女bbbb| 麻豆精品视频在线| 亚洲欧美在线视频观看| 欧美日韩电影一区| 国产盗摄一区二区三区| 亚洲高清在线精品| 欧美高清在线一区二区| 欧美一级日韩不卡播放免费| 成人免费视频播放| 中文字幕在线不卡| 精品久久久久久久久久久久久久久 | 91.麻豆视频| 亚洲婷婷国产精品电影人久久| 国产成人精品综合在线观看| 亚洲成人1区2区| 国产精品国产三级国产有无不卡| 国产精品人妖ts系列视频| av在线综合网| 亚洲人精品午夜| 成人av网站免费| 中文字幕一区二区视频| 91精品啪在线观看国产60岁| 成人免费看的视频| 美美哒免费高清在线观看视频一区二区| 国产欧美日韩三区| 日韩一区二区在线免费观看| 色呦呦日韩精品| 成人激情小说网站| 国产一区二区三区免费| 麻豆专区一区二区三区四区五区| 亚洲码国产岛国毛片在线| 26uuu亚洲综合色欧美| 国产成人av网站| 美腿丝袜亚洲综合| 免费在线看成人av| 午夜精品福利视频网站| 精品黑人一区二区三区久久| 欧美日韩一本到| 色综合天天狠狠| av亚洲精华国产精华精| 免费高清成人在线| 一区二区三区在线视频观看58| 国产99久久久国产精品潘金 | 色婷婷激情一区二区三区| 国产精品一区在线观看你懂的| 亚洲电影第三页| 亚洲人成网站色在线观看| 国产精品美女久久久久久| 久久这里只有精品视频网| 日韩精品一区二区三区蜜臀| 日韩亚洲欧美一区| 精品少妇一区二区三区免费观看 | 丰满白嫩尤物一区二区| 国产在线一区二区综合免费视频| 国产三级一区二区三区| 久久这里只有精品6| 久久只精品国产| 国产日韩欧美制服另类| 久久久久久毛片| 国产精品午夜在线观看| 国产精品成人在线观看| 亚洲欧洲一区二区在线播放| 国产精品不卡在线| 亚洲一区在线视频| 日本欧美加勒比视频| 狠狠色狠狠色综合日日91app| 国产精品99久久久久久久vr| 高清shemale亚洲人妖| 91美女片黄在线观看| 在线免费不卡电影| 精品一二三四区| 成人性生交大片免费| 91麻豆精品秘密| 9191成人精品久久| 欧美激情艳妇裸体舞| 亚洲精品久久嫩草网站秘色| 丝袜亚洲精品中文字幕一区| 亚洲欧美一区二区三区久本道91| 亚洲免费资源在线播放| 亚洲成国产人片在线观看| 九一九一国产精品| 91免费国产在线| 91精品国产高清一区二区三区 | 国产69精品久久99不卡| 91国产成人在线| 久久综合九色综合97婷婷女人| 国产亚洲精品精华液| 亚洲女与黑人做爰| 精品无人码麻豆乱码1区2区 | 国产成人av资源| 精品视频色一区| 久久久精品中文字幕麻豆发布| 亚洲免费观看在线观看| 极品少妇一区二区三区精品视频| 日韩欧美亚洲国产精品字幕久久久| 国产亚洲综合色| 午夜电影网一区| av午夜精品一区二区三区| 69久久夜色精品国产69蝌蚪网| 国产精品网站在线观看| 9色porny自拍视频一区二区| 亚洲综合成人网| 欧美第一区第二区| 精品一区二区三区视频在线观看| 在线一区二区视频| 2020日本不卡一区二区视频| 免费高清成人在线| 在线观看日韩高清av| 精品国产一区二区三区久久影院| 奇米影视7777精品一区二区| 欧美色图一区二区三区| 亚洲欧美偷拍三级| 日韩午夜在线影院| 欧美a级理论片| 在线看不卡av| 国产精品伦一区| 国产呦萝稀缺另类资源| 337p亚洲精品色噜噜狠狠| 亚洲免费看黄网站| 91在线视频免费观看| 国产一区二区精品在线观看| 欧美日韩中字一区| 一区二区三区国产精华| 99国产欧美久久久精品| 国产精品免费aⅴ片在线观看| 国模大尺度一区二区三区| 日韩视频在线一区二区| 免费高清在线视频一区·| 欧美一区午夜精品| 国产欧美日韩视频在线观看| 日韩久久精品一区| 亚洲最快最全在线视频| 91精品1区2区|