首页 > 其他分享 >VB6版国际象棋代码

VB6版国际象棋代码

时间:2024-01-31 19:56:31浏览次数:14  
标签:Me VB End Sub 代码 GridWidth Private VB6 国际象棋

VERSION 5.00
Begin VB.Form Form1 
   BackColor       =   &H00FFFFFF&
   BorderStyle     =   1  'Fixed Single
   Caption         =   "InternationalChess"
   ClientHeight    =   8145
   ClientLeft      =   45
   ClientTop       =   690
   ClientWidth     =   13005
   BeginProperty Font 
      Name            =   "宋体"
      Size            =   10.5
      Charset         =   134
      Weight          =   400
      Underline       =   0   'False
      Italic          =   0   'False
      Strikethrough   =   0   'False
   EndProperty
   Icon            =   "Form1.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   ScaleHeight     =   543
   ScaleMode       =   3  'Pixel
   ScaleWidth      =   867
   StartUpPosition =   2  '屏幕中心
   Begin VB.TextBox Text1 
      Appearance      =   0  'Flat
      Height          =   360
      Left            =   0
      TabIndex        =   3
      Top             =   7800
      Width           =   12900
   End
   Begin VB.ListBox List2 
      Appearance      =   0  'Flat
      Height          =   7380
      Left            =   9600
      TabIndex        =   2
      Top             =   300
      Width           =   3300
   End
   Begin VB.ListBox List1 
      Appearance      =   0  'Flat
      Height          =   7380
      Left            =   7800
      TabIndex        =   1
      Top             =   300
      Width           =   1800
   End
   Begin VB.PictureBox Picture1 
      AutoRedraw      =   -1  'True
      BorderStyle     =   0  'None
      Height          =   7800
      Left            =   0
      ScaleHeight     =   520
      ScaleMode       =   3  'Pixel
      ScaleWidth      =   520
      TabIndex        =   0
      Top             =   0
      Width           =   7800
      Begin VB.Image p 
         Height          =   855
         Index           =   32
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   31
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   30
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   29
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   28
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   27
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   26
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   25
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   24
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   23
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   22
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   21
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   20
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   19
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   18
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   17
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   16
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   15
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   14
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   13
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   12
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   11
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   10
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   9
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   8
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   7
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   6
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   5
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   4
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   3
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   2
         Left            =   0
         Top             =   0
         Width           =   855
      End
      Begin VB.Image p 
         Height          =   855
         Index           =   1
         Left            =   0
         Top             =   0
         Width           =   855
      End
   End
   Begin VB.Menu menuFile 
      Caption         =   "文件(&F)"
      Begin VB.Menu menuNew 
         Caption         =   "新建"
         Shortcut        =   ^N
      End
      Begin VB.Menu menuOpen 
         Caption         =   "打开"
         Shortcut        =   ^O
      End
      Begin VB.Menu menuSave 
         Caption         =   "保存"
         Shortcut        =   ^S
      End
      Begin VB.Menu Separator1 
         Caption         =   "-"
      End
      Begin VB.Menu menuExit 
         Caption         =   "退出"
      End
   End
   Begin VB.Menu menuOption 
      Caption         =   "选项(&O)"
      Begin VB.Menu menuCopyFEN 
         Caption         =   "复制局面"
         Shortcut        =   {F7}
      End
      Begin VB.Menu menuPasteFEN 
         Caption         =   "粘贴局面"
         Shortcut        =   {F8}
      End
      Begin VB.Menu Separator3 
         Caption         =   "-"
      End
      Begin VB.Menu menuChangeColor 
         Caption         =   "更改颜色"
      End
      Begin VB.Menu menuRotate 
         Caption         =   "旋转棋盘"
         Shortcut        =   ^R
      End
      Begin VB.Menu menuMoveControl 
         Caption         =   "显示移动路径"
         Checked         =   -1  'True
      End
   End
   Begin VB.Menu menuAI 
      Caption         =   "人工智能(&A)"
      Begin VB.Menu menuShowRed 
         Caption         =   "显示白方招法"
         Shortcut        =   ^W
      End
      Begin VB.Menu menuShowBlack 
         Caption         =   "显示黑方招法"
         Shortcut        =   ^B
      End
      Begin VB.Menu menuAutoGo 
         Caption         =   "电脑自动走棋"
         Shortcut        =   ^{F5}
      End
      Begin VB.Menu menuShowDetails 
         Caption         =   "显示局面信息"
      End
      Begin VB.Menu Separator2 
         Caption         =   "-"
      End
      Begin VB.Menu menuUseEngine 
         Caption         =   "使用引擎"
         Shortcut        =   {F9}
      End
      Begin VB.Menu menuEngineSetting 
         Caption         =   "引擎设置"
         Shortcut        =   ^{F9}
      End
   End
   Begin VB.Menu menuHelp 
      Caption         =   "帮助(&H)"
      Begin VB.Menu menuChessDB 
         Caption         =   "国际象棋云库查询"
      End
      Begin VB.Menu menuStockfish 
         Caption         =   "Stockfish引擎协议"
      End
      Begin VB.Menu Separator4 
         Caption         =   "-"
      End
      Begin VB.Menu menuAbout 
         Caption         =   "关于"
      End
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (lpszName As Any, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Const SND_SYNC = &H0         '  play synchronously (default)
Private Const SND_ASYNC = &H1         '  play asynchronously
Private Const SND_NODEFAULT = &H2         '  silence not default, if sound not found
Private Const SND_MEMORY = &H4         '  lpszSoundName points to a memory file
Private Const SND_ALIAS = &H10000     '  name is a WIN.INI [sounds] entry
Private Const SND_FILENAME = &H20000     '  name is a file name
Private Const SND_RESOURCE = &H40004     '  name is a resource name or atom
Private Const SND_ALIAS_ID = &H110000    '  name is a WIN.INI [sounds] entry identifier
Private Const SND_ALIAS_START = 0  '  must be > 4096 to keep strings in same section of resource file
Private Const SND_LOOP = &H8         '  loop the sound until next sndPlaySound
Private Const SND_NOSTOP = &H10
Private Type CHOOSECOLOR
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    rgbResult As Long
    lpCustColors As String
    Flags As Long
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type
Private Declare Function CHOOSECOLOR Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As CHOOSECOLOR) As Long
Private Const GridWidth As Integer = 60
Private QiziSize As Integer
Private color1 As Long, color2 As Long

Private Reg As RegExp, All As MatchCollection, Every As Match
Private FSO As Scripting.FileSystemObject
Private txt As Scripting.TextStream
Private jscode As String
Private IHDoc1 As MSHTML.IHTMLDocument
Private pW1 As MSHTML.IHTMLWindow2
Private IHDoc2 As MSHTML.IHTMLDocument
Private pW2 As MSHTML.IHTMLWindow2
Private X As MSXML2.XMLHTTP60
Private steps As Integer
Private FEN As String
Private FEN0 As String
Private FenCol() As Variant
Private Matrix(1 To 8, 1 To 8) As String
Private Indexes(1 To 8, 1 To 8) As Integer
Private MoveListCol() As String
Private KQkqCol() As String
Private enpassantCol() As String
Private Flag As Boolean
Private Rotated As Boolean
Private 红先 As Boolean
Private wb As String
Private KQkq As String
Private enpassant As String
Private Const QiZi As String = "rnbqkpRNBQKP"
Private images(1 To 12) As stdole.IPictureDisp
Private NewGame() As Byte
Private Draw() As Byte
Private Click() As Byte
Private Move2() As Byte
Private Capture() As Byte
Private Illegal() As Byte
Private First As image
Private Second As image
Private Promote As String
Private r1 As Integer, c1 As Integer, r2 As Integer, c2 As Integer

Private WS As WshShell
Private WE As WshExec
Private SI As IWshRuntimeLibrary.TextStream
Private SO As IWshRuntimeLibrary.TextStream

Private Sub Form_Load()
    On Error GoTo Err1:
    Dim b() As Byte
    Dim S1 As ADODB.Stream
    color1 = vbYellow
    QiziSize = 56
    LoadImage
    DrawQipan
    NewGame = VB.LoadResData(301, "CUSTOM") 'NewGame.wav
    Draw = VB.LoadResData(302, "CUSTOM") 'Draw.wav
    Click = VB.LoadResData(303, "CUSTOM") 'Click.wav
    Move2 = VB.LoadResData(304, "CUSTOM") 'Move2.wav
    Capture = VB.LoadResData(305, "CUSTOM") 'Capture.wav
    Illegal = VB.LoadResData(306, "CUSTOM") 'Illegal.wav
    'b = VB.LoadResData(201, "CUSTOM") 'UTF-8
    b = VB.LoadResData(202, "CUSTOM") 'ANSI
'    Set S1 = New ADODB.Stream
'    With S1
'        .Type = adTypeBinary
'        .Mode = adModeReadWrite
'        .open
'        .Write b
'        .position = 0
'        .Type = adTypeText
'        .Charset = "utf-8"
'        jscode = .ReadText
'        .Close
'    End With
'    Set S1 = Nothing
    jscode = StrConv(b, vbUnicode, &H804)
    Set IHDoc1 = New MSHTML.HTMLDocument
    Set pW1 = IHDoc1.parentWindow
    IHDoc1.Write "<script>" & jscode & "</script>"
    
    EnginePath = GetSetting(App.ProductName, "Engine", "EnginePath", "")
    Protocol = GetSetting(App.ProductName, "Engine", "Protocol", "uci")
    Options = GetSetting(App.ProductName, "Engine", "Options", "")
    GoCommand = GetSetting(App.ProductName, "Engine", "Go", "go depth 18")
    Wait = CSng(GetSetting(App.ProductName, "Engine", "Wait", "3"))
    MatchString = GetSetting(App.ProductName, "Engine", "MatchString", "info depth * multipv 1 * pv *")
    menuNew_Click
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub DrawQipan()
    Dim r As Integer
    Dim c As Integer
    Dim i As Integer
    Me.Picture1.Cls
    Me.Picture1.BackColor = color1
    color2 = OppColor(color1)
    For i = 1 To 8 Step 2
        Me.Picture1.Line (i * GridWidth + 20, 20)-(i * GridWidth + GridWidth + 20, 8 * GridWidth + 20), color2, BF
    Next i
    Me.Picture1.DrawMode = vbInvert
    For i = 1 To 8 Step 2
        Me.Picture1.Line (20, i * GridWidth + 20)-(8 * GridWidth + 20, i * GridWidth + GridWidth + 20), color2, BF
    Next
    Me.Picture1.DrawMode = vbCopyPen
    Me.Picture1.DrawWidth = 2
    Me.Picture1.Line (20, 20)-(8 * GridWidth + 20, 20), vbBlack
    Me.Picture1.Line (20, 8 * GridWidth + 20)-(8 * GridWidth + 20, 8 * GridWidth + 20), vbBlack
    Me.Picture1.Line (20, 20)-(20, 8 * GridWidth + 20), vbBlack
    Me.Picture1.Line (8 * GridWidth + 20, 20)-(8 * GridWidth + 20, 8 * GridWidth + 20), vbBlack
    Me.Picture1.DrawWidth = 1
    If Rotated Then
        For c = 1 To 8
            Me.Picture1.CurrentX = GridWidth * c - 10: Me.Picture1.CurrentY = 4: Me.Picture1.Print Chr(Asc("h") - c + 1)
        Next c
        
        For r = 1 To 8
            Me.Picture1.CurrentX = 8 * GridWidth + 20: Me.Picture1.CurrentY = r * GridWidth - 16: Me.Picture1.Print r
        Next r
    Else
        For c = 1 To 8
            Me.Picture1.CurrentX = GridWidth * c - 10: Me.Picture1.CurrentY = 8 * GridWidth + 20: Me.Picture1.Print Chr(Asc("a") + c - 1)
        Next c
        
        For r = 1 To 8
            Me.Picture1.CurrentX = 4: Me.Picture1.CurrentY = r * GridWidth - 16: Me.Picture1.Print 9 - r
        Next r
    End If
End Sub

Private Function OppColor(ByVal Color As Long) As Long
    Dim Red As Integer, Green As Integer, Blue As Integer
    Red = Color And &HFF '拆分颜色
    Green = (Color And 65280) \ 256
    Blue = (Color And &HFF0000) \ 65536
    Red = 255 - Red
    Green = 255 - Green
    Blue = 255 - Blue
    If Red < 0 Then Red = 0
    If Red > 255 Then Red = 255
    If Green < 0 Then Green = 0
    If Green > 255 Then Green = 255
    If Blue < 0 Then Blue = 0
    If Blue > 255 Then Blue = 255
    OppColor = RGB(Red, Green, Blue) '得到反色
End Function

Private Sub Form_Terminate()
    QuitEngine
    PlaySound Draw(0), 0&, SND_MEMORY Or SND_ASYNC
End Sub

Private Sub List2_Click()
    On Error GoTo Err1:
    Dim Move As String
    If Me.List2.ListIndex >= 1 Then
        Move = Split(Me.List2.Text, vbTab)(0)
        r1 = 9 - CInt(Mid(Move, 2, 1))
        c1 = Asc(Mid(Move, 1, 1)) - Asc("a") + 1
        r2 = 9 - CInt(Mid(Move, 4, 1))
        c2 = Asc(Mid(Move, 3, 1)) - Asc("a") + 1
        If Len(Move) = 5 Then
            Promote = Right(Move, 1)
        End If
        Call Go(r1, c1, r2, c2)
    End If
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub menuAbout_Click()
    On Error GoTo Err1:
    Dim v As Variant
    v = Array("作者:刘永富【ryueifu】", "邮箱:[email protected]", "抖音号:ryueifu", "中国象棋棋谱浏览器QQ群:291644972", "", "产品名称:" & App.ProductName, "更新日期:2024年1月3日")
    MsgBox Join(v, vbNewLine), vbInformation, "产品信息 & 联系方式"
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub menuChangeColor_Click()
    Dim Result As Long
    Dim pChoosecolor As CHOOSECOLOR
    Dim CustomColor() As Byte
    With pChoosecolor
        .hwndOwner = Me.hWnd
        .lpCustColors = StrConv(CustomColor, vbUnicode)
        .Flags = 0
        .lStructSize = Len(pChoosecolor)
    End With
    Result = CHOOSECOLOR(pChoosecolor)
    If Result > 0 Then
      color1 = pChoosecolor.rgbResult
    End If
    DrawQipan
End Sub

Private Sub LoadImage()
    On Error GoTo Err1
    Dim b() As Byte
    Dim i As Integer
    For i = 1 To 12
        b = VB.LoadResData(100 + i, "CUSTOM")
        Open App.Path & "\temp.gif" For Binary Access Write As #1
            Put #1, , b
        Close #1
        Set images(i) = LoadPicture(App.Path & "\temp.gif")
    Next i
    Kill App.Path & "\temp.gif"
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub menuChessDB_Click()
    OpenUrl "http://www.chessdb.cn/cloudbookc_api.html"
End Sub

Private Sub menuCopyFEN_Click()
    With Clipboard
        .Clear
        .SetText FEN & " " & wb & " " & KQkq & " " & enpassant & " 0 1", VBRUN.ClipBoardConstants.vbCFText
    End With
End Sub

Private Sub menuExit_Click()
    Unload Me
End Sub

Private Sub menuMoveControl_Click()
    Me.menuMoveControl.Checked = Not Me.menuMoveControl.Checked
End Sub

Private Sub menuNew_Click()
    On Error GoTo Err1
    FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR"
    红先 = True
    wb = "w"
    KQkq = "KQkq"
    enpassant = "-"
    PasteFEN
    PlaySound NewGame(0), 0&, SND_MEMORY Or SND_ASYNC
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub PasteFEN()
    On Error GoTo Err1
    Set First = Nothing
    FenToArray
    ReDim FenCol(0 To 0)
    FenCol(0) = Matrix
    ReDim MoveListCol(1 To 1)
    ReDim KQkqCol(0 To 0)
    ReDim enpassantCol(0 To 0)
    KQkqCol(0) = KQkq
    enpassantCol(0) = enpassant
    Me.List1.Clear
    Me.List1.AddItem "回合." & vbTab & "棋  谱"
    Me.List1.ListIndex = 0
    FEN0 = FEN & " " & wb & " " & KQkq & " " & enpassant & " 0 1"
    FenToLayout
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub FenToLayout()
    On Error GoTo Err1
    Dim r As Integer
    Dim c As Integer
    Dim i As Integer
    Dim p As String
    Dim img As image
    For i = 1 To 32
        Set img = Me.p.Item(i)
        img.Move -100, -100
        img.BorderStyle = VBRUN.BorderStyleConstants.vbTransparent
    Next i
    Erase Indexes
    i = 1
    For r = 1 To 8
        For c = 1 To 8
             p = Matrix(r, c)
             If p = "o" Then
             Else
                Set img = Me.p.Item(i)
                Indexes(r, c) = i
                UpdateImage img, p
                If Rotated Then
                   img.Move 20 + GridWidth * (9 - c) - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * (9 - r) - GridWidth / 2 - QiziSize / 2
                Else
                   img.Move 20 + GridWidth * c - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * r - GridWidth / 2 - QiziSize / 2
                End If
                i = i + 1
            End If
        Next c
    Next r
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub UpdateImage(image As VB.image, p As String)
    Dim i As Integer
    i = InStr(QiZi, p)
    Set image.Picture = images(i)
    If i <= 6 Then
        image.Tag = "b"
    Else
        image.Tag = "w"
    End If
End Sub

Private Sub FenToArray()
    Dim r As Integer
    Dim c As Integer
    Dim f As String
    f = 加空(FEN)
    Erase Matrix
    For r = 1 To 8
        For c = 1 To 8
            Matrix(r, c) = Mid(f, (r - 1) * 9 + c, 1)
        Next c
    Next r
End Sub

Private Sub ArrayToFen()
    Dim r As Integer
    Dim c As Integer
    FEN = String(71, "/")
    For r = 1 To 8
        For c = 1 To 8
             Mid(FEN, (r - 1) * 9 + c, 1) = Matrix(r, c)
        Next c
    Next r
    FEN = 去空(FEN)
End Sub

Private Sub menuOpen_Click()
    On Error GoTo Err1:
    Dim FileName As String
    Dim i As Integer
    Dim s As String
    Dim MoveListCol() As String
    FileName = OpenDialog(Me.hWnd, Replace("棋谱文件(*.txt)|*.txt|所有文件(*.*)|*.*|", "|", Chr(0)))
    If FileName = "" Then
    Else
        Open FileName For Input As #1
            Line Input #1, s
        Close #1
        Me.menuAutoGo.Checked = False
        Me.menuShowRed.Checked = False
        Me.menuShowBlack.Checked = False
        Me.menuShowDetails.Checked = False
        FEN = Split(s, " ")(0)
        wb = Split(s, " ")(1)
        If wb = "w" Then
            红先 = True
        ElseIf wb = "b" Then
            红先 = False
        End If
        KQkq = Split(s, " ")(2)
        enpassant = Split(s, " ")(3)
        PasteFEN
        If InStr(s, "moves") > 0 Then
            MoveListCol = Split(Split(s, "moves")(1), " ")
            steps = UBound(MoveListCol)
            For i = 1 To steps
                ExecuteMove MoveListCol(i)
            Next i
        End If
        Me.List1.ListIndex = 0
    End If
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub menuPasteFEN_Click()
    On Error GoTo Err1:
    Dim s As String
    With Clipboard
        s = .GetText(Format:=VBRUN.ClipBoardConstants.vbCFText)
    End With
    FEN = Split(s, " ")(0)
    wb = Split(s, " ")(1)
    If wb = "w" Then
        红先 = True
    ElseIf wb = "b" Then
        红先 = False
    End If
    KQkq = Split(s, " ")(2)
    enpassant = Split(s, " ")(3)
    PasteFEN
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub menuRotate_Click()
    Me.menuRotate.Checked = Not Me.menuRotate.Checked
    Rotated = Me.menuRotate.Checked
    DrawQipan
    FenToLayout
End Sub

Private Sub menuSave_Click()
    On Error GoTo Err1
    Dim FileName As String
    Dim s As String
    FileName = SaveDialog(Me.hWnd, Replace("棋谱文件(*.txt)|*.txt|所有文件(*.*)|*.*|", "|", Chr(0)))
    If FileName = "" Then
    Else
        If UBound(MoveListCol) = 0 Then
            s = FEN0
        Else
            s = FEN0 & " moves " & Join(MoveListCol, " ")
        End If
        Open FileName For Output As #1
            Print #1, s
        Close #1
    End If
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub menuShowDetails_Click()
    Me.menuShowDetails.Checked = Not Me.menuShowDetails.Checked
    If Me.menuShowDetails.Checked Then
        ShowDetails
    End If
End Sub

Private Sub menuShowRed_Click()
    Me.menuShowRed.Checked = Not Me.menuShowRed.Checked
    If wb = "w" And Me.menuShowRed.Checked Then
        AI
    End If
End Sub

Private Sub menuShowBlack_Click()
    Me.menuShowBlack.Checked = Not Me.menuShowBlack.Checked
    If wb = "b" And Me.menuShowBlack.Checked Then
        AI
    End If
End Sub

Private Sub menuAutoGo_Click()
    Me.menuAutoGo.Checked = Not Me.menuAutoGo.Checked
    If wb = "w" And Me.menuShowRed.Checked Or wb = "b" And Me.menuShowBlack.Checked Then
        AI
    End If
End Sub

Private Sub menuStockfish_Click()
    OpenUrl "https://github.com/official-stockfish/Stockfish/wiki/UCI-&-Commands"
End Sub

Private Sub p_Click(index As Integer)
    On Error GoTo Err1:
    If First Is Nothing Then
        If Me.p.Item(index).Tag = wb Then
            Set First = Me.p.Item(index)
            c1 = (First.Left - 20 + QiziSize / 2 + GridWidth / 2) / GridWidth
            r1 = (First.Top - 20 + QiziSize / 2 + GridWidth / 2) / GridWidth
            If Rotated Then
                c1 = 9 - c1
                r1 = 9 - r1
            End If
            First.BorderStyle = VBRUN.BorderStyleConstants.vbBSSolid
            PlaySound Click(0), 0&, SND_MEMORY Or SND_ASYNC
        End If
    Else
        If Me.p.Item(index).Tag = wb Then
            First.BorderStyle = VBRUN.BorderStyleConstants.vbTransparent
            Set First = Nothing
        Else
            Set Second = Me.p.Item(index)
            c2 = (Second.Left - 20 + QiziSize / 2 + GridWidth / 2) / GridWidth
            r2 = (Second.Top - 20 + QiziSize / 2 + GridWidth / 2) / GridWidth
            If Rotated Then
                c2 = 9 - c2
                r2 = 9 - r2
            End If
            If Movable(FEN, wb, KQkq, enpassant, r1, c1, r2, c2) Then
                Call Go(r1, c1, r2, c2)
            Else
                First.BorderStyle = VBRUN.BorderStyleConstants.vbTransparent
                Set First = Nothing
                PlaySound Illegal(0), 0&, SND_MEMORY Or SND_ASYNC
            End If
        End If
    End If
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    On Error GoTo Err1
    c2 = Int((X - 20) / GridWidth) + 1: r2 = Int((Y - 20) / GridWidth) + 1
    If First Is Nothing Then
    ElseIf c2 < 1 Or c2 > 8 Or r2 < 1 Or r2 > 8 Then
    Else
        If Rotated Then
            c2 = 9 - c2
            r2 = 9 - r2
        End If
        If Movable(FEN, wb, KQkq, enpassant, r1, c1, r2, c2) Then
            Call Go(r1, c1, r2, c2)
        Else
            First.BorderStyle = VBRUN.BorderStyleConstants.vbTransparent
            Set First = Nothing
            PlaySound Illegal(0), 0&, SND_MEMORY Or SND_ASYNC
        End If
    End If
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub ExecuteMove(m5 As String)
    On Error GoTo Err1:
    Dim r1 As Integer, c1 As Integer, r2 As Integer, c2 As Integer
    Dim i As Integer
    Dim j As Integer
    Dim qipu As String
    i = Me.List1.ListIndex + 1
    ReDim Preserve FenCol(0 To i)
    ReDim Preserve MoveListCol(1 To i)
    ReDim Preserve KQkqCol(0 To i)
    ReDim Preserve enpassantCol(0 To i)
    MoveListCol(i) = m5
    r1 = 9 - CInt(Mid(m5, 2, 1)): c1 = Asc(Mid(m5, 1, 1)) - Asc("a") + 1: r2 = 9 - CInt(Mid(m5, 4, 1)): c2 = Asc(Mid(m5, 3, 1)) - Asc("a") + 1
    enpassant = "-"
    If Matrix(r1, c1) Like "[pP]" And Abs(r1 - r2) = 2 Then '兵进两步
        enpassant = Mid(m5, 1, 1) & CStr((CInt(Mid(m5, 2, 1)) + CInt(Mid(m5, 4, 1))) / 2) 'movelist的平均值
    End If
    If Matrix(r1, c1) Like "[pP]" And Matrix(r2, c2) = "o" And Abs(c1 - c2) = 1 Then '吃过路兵
        Me.p.Item(Indexes(r1, c2)).Move -100, -100
        Matrix(r1, c2) = "o"
        Indexes(r1, c2) = 0
    End If
    Matrix(r2, c2) = Matrix(r1, c1)
    Matrix(r1, c1) = "o"
    Indexes(r2, c2) = Indexes(r1, c1)
    Indexes(r1, c1) = 0
    If Len(m5) = 5 Then '底兵升变
        Promote = Right(m5, 1)
        Matrix(r2, c2) = Promote
        UpdateImage Me.p.Item(Indexes(r2, c2)), Promote
        Promote = ""
    End If
    If Matrix(r2, c2) = "k" And r1 = 1 And c1 = 5 And r2 = r1 And c2 = c1 + 2 Then '王车易位
        Matrix(1, 6) = Matrix(1, 8): Matrix(1, 8) = "o"
        Indexes(1, 6) = Indexes(1, 8): Indexes(1, 8) = 0
        If Rotated Then
            Me.p.Item(Indexes(1, 6)).Move 20 + GridWidth * (9 - 6) - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * (9 - 1) - GridWidth / 2 - QiziSize / 2
        Else
            Me.p.Item(Indexes(1, 6)).Move 20 + GridWidth * 6 - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * 1 - GridWidth / 2 - QiziSize / 2
        End If
    ElseIf Matrix(r2, c2) = "k" And r1 = 1 And c1 = 5 And r2 = r1 And c2 = c1 - 2 Then
        Matrix(1, 4) = Matrix(1, 1): Matrix(1, 1) = "o"
        Indexes(1, 4) = Indexes(1, 1): Indexes(1, 1) = 0
        If Rotated Then
            Me.p.Item(Indexes(1, 4)).Move 20 + GridWidth * (9 - 4) - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * (9 - 1) - GridWidth / 2 - QiziSize / 2
        Else
            Me.p.Item(Indexes(1, 4)).Move 20 + GridWidth * 4 - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * 1 - GridWidth / 2 - QiziSize / 2
        End If
    ElseIf Matrix(r2, c2) = "K" And r1 = 8 And c1 = 5 And r2 = r1 And c2 = c1 + 2 Then
        Matrix(8, 6) = Matrix(8, 8): Matrix(8, 8) = "o"
        Indexes(8, 6) = Indexes(8, 8): Indexes(8, 8) = 0
        If Rotated Then
            Me.p.Item(Indexes(8, 6)).Move 20 + GridWidth * (9 - 6) - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * (9 - 8) - GridWidth / 2 - QiziSize / 2
        Else
            Me.p.Item(Indexes(8, 6)).Move 20 + GridWidth * 6 - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * 8 - GridWidth / 2 - QiziSize / 2
        End If
    ElseIf Matrix(r2, c2) = "K" And r1 = 8 And c1 = 5 And r2 = r1 And c2 = c1 - 2 Then
        Matrix(8, 4) = Matrix(8, 1): Matrix(8, 1) = "o"
        Indexes(8, 4) = Indexes(8, 1): Indexes(8, 1) = 0
        If Rotated Then
            Me.p.Item(Indexes(8, 4)).Move 20 + GridWidth * (9 - 4) - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * (9 - 8) - GridWidth / 2 - QiziSize / 2
        Else
            Me.p.Item(Indexes(8, 4)).Move 20 + GridWidth * 4 - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * 8 - GridWidth / 2 - QiziSize / 2
        End If
    End If
    If InStr(m5, "e8") > 0 Then
        KQkq = Replace(KQkq, "k", ""): KQkq = Replace(KQkq, "q", "")
    End If
    If InStr(m5, "h8") > 0 Then
        KQkq = Replace(KQkq, "k", "")
    End If
    If InStr(m5, "a8") > 0 Then
        KQkq = Replace(KQkq, "q", "")
    End If
    If InStr(m5, "e1") > 0 Then
        KQkq = Replace(KQkq, "K", ""): KQkq = Replace(KQkq, "Q", "")
    End If
    If InStr(m5, "h1") > 0 Then
        KQkq = Replace(KQkq, "K", "")
    End If
    If InStr(m5, "a1") > 0 Then
        KQkq = Replace(KQkq, "Q", "")
    End If
    If KQkq = "" Then
        KQkq = "-"
    End If
    FenCol(i) = Matrix
    KQkqCol(i) = KQkq
    enpassantCol(i) = enpassant
    If i = Me.List1.ListCount Then
    Else
        For j = i To Me.List1.ListCount - 1
            Me.List1.RemoveItem i
        Next j
    End If
    qipu = m5
    If 红先 And (i Mod 2 = 1) Or 红先 = False And (i Mod 2 = 0) Then
        Me.List1.AddItem i \ 2 + 1 & "." & vbTab & qipu
    Else
        Me.List1.AddItem " " & vbTab & qipu
    End If
    Flag = True
    Me.List1.ListIndex = i '只更新FEN,不更新画面
    Flag = False
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub Go(r1 As Integer, c1 As Integer, r2 As Integer, c2 As Integer)
    On Error GoTo Err1:
    Dim i As Integer
    Set First = Me.p.Item(Indexes(r1, c1))
    If Matrix(r2, c2) = "o" Then
        Set Second = Nothing
    Else
        Set Second = Me.p.Item(Indexes(r2, c2))
    End If
    First.BorderStyle = VBRUN.BorderStyleConstants.vbTransparent
    If Matrix(r1, c1) = "p" And r2 = 8 Then '升变
        If Promote = "" Then
            Promote = InputBox("选择升变棋子[qrnb]", "升变", "q")
            If Promote Like "[qrnb]" Then
            Else
                Set First = Nothing
                Promote = ""
                Exit Sub
            End If
        End If
    ElseIf Matrix(r1, c1) = "P" And r2 = 1 Then '升变
        If Promote = "" Then
            Promote = InputBox("选择升变棋子[QRNB]", "升变", "Q")
            If Promote Like "[QRNB]" Then
            Else
                Set First = Nothing
                Promote = ""
                Exit Sub
            End If
        End If
    End If
    If Rotated Then
        If Me.menuMoveControl.Checked Then
            MoveControl First, 20 + GridWidth * (9 - c2) - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * (9 - r2) - GridWidth / 2 - QiziSize / 2
        End If
        First.Move 20 + GridWidth * (9 - c2) - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * (9 - r2) - GridWidth / 2 - QiziSize / 2
    Else
        If Me.menuMoveControl.Checked Then
            MoveControl First, 20 + GridWidth * c2 - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * r2 - GridWidth / 2 - QiziSize / 2
        End If
        First.Move 20 + GridWidth * c2 - GridWidth / 2 - QiziSize / 2, 20 + GridWidth * r2 - GridWidth / 2 - QiziSize / 2
    End If
    If Second Is Nothing Then
        PlaySound Move2(0), 0&, SND_MEMORY Or SND_ASYNC
    Else
        Second.Move -100, -100
        PlaySound Capture(0), 0&, SND_MEMORY Or SND_ASYNC
    End If
    Set First = Nothing
    Set Second = Nothing
    ExecuteMove Chr((c1 - 1) + Asc("a")) & (9 - r1) & Chr((c2 - 1) + Asc("a")) & (9 - r2) & Promote
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub MoveControl(img As VB.image, x2 As Double, y2 As Double)
    Dim x1 As Double, y1 As Double
    Dim i As Double
    Dim s As Double
    Dim v As Double
    Dim count As Double
    img.ZOrder 0
    x1 = img.Left: y1 = img.Top
    s = Sqr((x1 - x2) ^ 2 + (y1 - y2) ^ 2)
    v = 10
    count = s / v
    For i = 1 To count
        Delay 10
        img.Move x1 + i * v * (x2 - x1) / s, y1 + i * v * (y2 - y1) / s
    Next i
End Sub
Private Sub Delay(Interval As Long)
    Dim Savetime As Long
    Savetime = timeGetTime()
    While timeGetTime < Savetime + Interval
        DoEvents
    Wend
End Sub

Private Sub List1_Click()
    On Error GoTo Err1:
    Dim i As Integer
    Dim r As Integer
    Dim c As Integer
    Dim v As Variant
    i = Me.List1.ListIndex
    v = FenCol(i)
    For r = 1 To 8
        For c = 1 To 8
            Matrix(r, c) = v(r, c)
        Next c
    Next r
    ArrayToFen
    If Flag = False Then
        FenToLayout
    End If
    If i Mod 2 = 0 And 红先 Or i Mod 2 = 1 And 红先 = False Then
        wb = "w"
    Else
        wb = "b"
    End If
    KQkq = KQkqCol(i)
    enpassant = enpassantCol(i)
    Me.Text1.Text = FEN & " " & wb & " " & KQkq & " " & enpassant & " 0 1"
    If Me.menuShowDetails.Checked Then
        ShowDetails
    End If
    Me.List2.Clear
    If wb = "w" And Me.menuShowRed.Checked Or wb = "b" And Me.menuShowBlack.Checked Then
        Delay 1000
        AI
    End If
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Function GetSource(url As String) As String
    On Error GoTo Err1:
    Set X = New MSXML2.XMLHTTP60
    With X
        .open "GET", url, False
        .send
        GetSource = .ResponseText
    End With
    Exit Function
Err1:
    GetSource = Err.Description
End Function

Private Sub AI()
    Me.Picture1.Enabled = False
    Me.List1.Enabled = False
    Me.List2.Enabled = False
    If Me.menuUseEngine.Checked Then
        GoEngine
    Else
        queryall
    End If
     Me.Picture1.Enabled = True
     Me.List1.Enabled = True
     Me.List2.Enabled = True
End Sub
Private Sub ShowDetails()
    On Error GoTo Err1:
    Dim FEN1 As String
    Dim ResponseText As String
    Dim Msg As String
    FEN1 = FEN & " " & wb & " " & KQkq & " " & enpassant & " 0 1"
    ResponseText = GetSource("http://www.chessdb.cn/cdb.php?action=queryall&learn=1&showall=0&board=" & FEN1)
    If ResponseText Like "move:*" Then

    ElseIf ResponseText Like "invalid board*" Then
        Msg = Msg & "非法局面 "
    ElseIf ResponseText Like "checkmate*" Then
        Msg = Msg & "绝杀 "
    ElseIf ResponseText Like "stalemate*" Then
        Msg = Msg & "逼和 "
    ElseIf ResponseText Like "unknown*" Then
    End If
    ResponseText = GetSource("http://www.chessdb.cn/cdb.php?action=querypv&learn=1&board=" & FEN1)
    If InStr(ResponseText, "pv:") > 0 Then
        Msg = Msg & " " & ResponseText
    End If
    If Msg = "" Then
    Else
        Me.Text1.Text = Msg
    End If
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub queryall()
    On Error GoTo Err1
    Dim FEN1 As String
    Dim movelist As String
    Dim ResponseText As String
    Dim moves As Variant
    Dim v As Variant
    Dim token As Long
    FEN1 = FEN & " " & wb & " " & KQkq & " " & enpassant & " 0 1"
    If wb = "w" Then
        Me.List2.ForeColor = vbRed
    Else
        Me.List2.ForeColor = vbBlack
    End If

    ResponseText = GetSource("http://www.chessdb.cn/cdb.php?action=queryall&learn=1&showall=0&board=" & FEN1)
    If ResponseText Like "move:*" Then
        moves = Split(ResponseText, "|")
        Set Reg = New RegExp
        With Reg
            .Global = False
            .IgnoreCase = True
            .Pattern = "move:([a-z1-8]+),score:(.+),rank:(.+),note:(.+)"
            Me.List2.Clear
            Me.List2.AddItem "move" & vbTab & "score" & vbTab & "rank" & vbTab & "note"
            For Each v In moves
                Set All = .Execute(CStr(v))
                Set Every = All.Item(0)
                Me.List2.AddItem Every.SubMatches(0) & vbTab & Every.SubMatches(1) & vbTab & Every.SubMatches(2) & vbTab & Every.SubMatches(3)
            Next v
            If Me.menuAutoGo.Checked Then
                Me.List2.ListIndex = 1
            End If
        End With
    ElseIf ResponseText Like "unknown*" Then '"unknown" & Chr(0)
        token = CLng(pW1.get_token(FEN1))
        ResponseText = GetSource("http://www.chessdb.cn/cdb.php?action=queryengine&board=" & FEN1 & "&movelist=&token=" & token)
        Me.List2.Clear
        Set Reg = New RegExp
        With Reg
            .Global = False
            .IgnoreCase = True
            .Pattern = "move:([a-z1-8]+)"
            Set All = .Execute(ResponseText)
            Set Every = All.Item(0)
        End With
        Me.List2.AddItem "move"
        Me.List2.AddItem Every.SubMatches(0)
        If Me.menuAutoGo.Checked Then
            Me.List2.ListIndex = 1
        End If
    End If
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

Private Sub menuUseEngine_Click()
    On Error GoTo Err1
    Dim L As String
    Me.menuUseEngine.Checked = Not Me.menuUseEngine.Checked
    If Me.menuUseEngine.Checked Then
        If EnginePath = "" Then
            menuEngineSetting_Click
            Me.menuUseEngine.Checked = False
        Else
            Set WS = New WshShell
            Set WE = WS.Exec(EnginePath)
            Set SI = WE.StdIn
            SI.WriteLine Protocol
            Set SO = WE.StdOut
            Do
                L = SO.ReadLine
                If L Like "uciok*" Then
                    Exit Do
                End If
            Loop
            If Options = "" Then
            Else
                SI.WriteLine Options
            End If
        End If
    Else
        QuitEngine
    End If
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub
Private Sub menuEngineSetting_Click()
    Form2.Show vbModal, Me
End Sub

Private Sub QuitEngine()
    On Error GoTo Err1
    If WE Is Nothing Then
    Else
        If WE.Status = WshRunning Then
            SI.WriteLine "quit"
            SI.Close
            WE.Terminate
        End If
    End If
    Set WE = Nothing
    Set WS = Nothing
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

 

标签:Me,VB,End,Sub,代码,GridWidth,Private,VB6,国际象棋
From: https://www.cnblogs.com/ryueifu-VBA/p/17999966

相关文章

  • github 代码使用注意事项 开源协议 license
    MIT许可证:只为作者保留版权,而无任何其他了限制。它使人们几乎可以对您的项目进行任何操作,即时是制作和分发封闭源代码版本。Babel,.NETCore和Rails使用MIT许可证¹。BSD许可证:同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足......
  • 代码随想录算法训练营第八天| 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
    反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。题目链接:344.反转字符串-力扣(LeetCode)关于是否用reverse函数解决问题:如果题目......
  • mybatis的代码生成器generate的使用
    三步1、打开idea的插件管理,添加mybatisPlus 2、连接数据库  3、找到对应的表  下面红色圈内的内容需要注意,比如module是你想把代码生成在哪个模块,其次是package就是想在哪个目录下,然后就是主键自增方式和生成的哪些类。之后就看下生成的类是否有问题即可,一般是......
  • 代码越精简的越灵活,还是越冗长的越灵活?
    代码越精简的越灵活,还是越冗长的越灵活?代码的灵活性并不完全取决于其精简或冗长的程度。精简的代码通常更容易阅读、理解和修改,从而在一定程度上提高了灵活性。短小精悍的代码能够更清晰地表达意图,减少出错的可能性,并且易于维护和扩展。然而,冗长的代码不等于不灵活。有些情况......
  • [word] 如何快速完成Word自动生成目录,无需代码,直接搞定,秒学!
    很多不会添加目录的朋友可能觉得很麻烦,其实并不是这样,今天小编为大家分享一个自动生成目录的方法,不用复杂的代码,就可以直接搞定啦!一、设置标题首先,先给Word设置标题。选中文字,点右上角【样式】,选择自己需要的样式就可以了。......
  • 代码随想录 day36 无重叠区间 划分字母区间 合并区间
    无重叠区间这里的思路是找到有几个非重叠区间然后总数减去非重叠区间就是剩下的重叠区间数首先排好序按左或者右都可以这里按左排好然后发现边界不重叠就++边界重叠那么由于左边界优先对齐了所以右边界更新作为一个新的整体区间和下一个区间比较划分字母区间......
  • 手撸代码#1:从0开始的LeNet5(PyTorch框架)
    摘要:本文介绍了如何从0开始构建LeNet5去识别手写数字(在MNIST数据集上)。代码包括三大部分:网络结构部分、训练部分、测试部分。在编LeNet5部分代码之前,本文详细地梳理了LeNet5的结构,对于初学者十分友好。训练和测试部分也都有详细的代码说明。在实现LeNet5手写数字识别的同时,......
  • 低代码平台
    低代码平台是一种软件工具,它可以帮助开发人员更快、更轻松地创建应用程序。低代码平台的主要作用包括:提高开发效率:低代码平台可以通过可视化的界面和拖放式组件,减少编写代码的时间和工作量,从而提高开发效率。降低开发成本:低代码平台可以减少对专业开发人员的需求,降低开发成本。快速......
  • 《C++ Primer Plus》(第六版)中文版——思维导图+附录PDF+源代码
    说明,以下文件可在异步社区免费下载不同之处在于原附录PDF文件没有书签,而本文分享的附录文件带有书签本文所有文件下载链接:https://www.123pan.com/s/lO3uVv-uaEKv.html思维导图(图片)以下仅为预览,高清图片可从文章开头下载链接中下载另外后续本人有空会制作XMind脑图版本,会添加......
  • 阿里云参编业内首个代码大模型标准,通义灵码获 2023 AI4SE “银弹” 案例
    日前,中国人工智能产业发展联盟智能化软件工程工作组(AIforSoftwareEngineering,下文简称AI4SE)在京召开首届“AI4SE创新巡航”活动。阿里云作为AI4SE首批成员单位,与中国信息通信研究院等组织联合发起的《智能化软件工程技术和应用要求第一部分:代码大模型》(标准编号AIIA/PG0110......