欢迎访问:常州市武进区嘉泽中心小学网站 !今天是:
栏目列表
您现在的位置是:首页>>教师>>计算机技术>>程序设计>>游戏开发>>文章内容
使用vb.net实现五子棋的人工智能4电脑算法1
发布时间:2008-11-20   点击:   来源:本站原创   录入者:佚名
 

                                                 五子棋的人工智能

                                                          ———— 利用策略类AI和{域名已经过期}实现五子棋

                                                                                    作者:张宇

  六,电脑算法(1)

    '*****************************************************************************

    '** 模块名称:  diannao

    '**

    '** 描述:   此程序主要执行以下功能:

    '**                 1. 初始化赋值系统。

    '**                 2. 赋值加强算法。

    '**                 3. 计算电脑和玩家的最佳攻击位。

    '**                 4. 比较电脑和玩家的最佳攻击位并决定电脑的最佳策略。

    '**                 5. 执行检查获胜函数。

    '**

'*****************************************************************************

 

    Sub diannao()

        Dim i, j, k, m, n As Integer

        Dim dc As Integer

        Dim cab As Integer

        Dim pab As Integer

        For i = 0 To 9

            For j = 0 To 9

                pscore(i, j) = 0

                cscore(i, j) = 0

            Next

        Next

        '初始化赋值数组

        ''' ********                        电脑加强算法                ********

        For i = 0 To 191

            If cflag(i) = True Then

                cab = 0

                For j = 0 To 9

                    For k = 0 To 9

                        If table(j, k) = 1 Then

                            If cwin(j, k, i) = True Then

                                cab = cab + 1

                            End If

                        End If

                    Next

                Next

                Select Case cab

                    Case 3

                        For m = 0 To 9

                            For n = 0 To 9

                                If table(m, n) = 0 Then

                                    If cwin(m, n, i) = True Then

                                        cscore(m, n) = cscore(m, n) + 5

                                    End If

                                End If

                            Next

                        Next

                    Case 4

                        For m = 0 To 9

                            For n = 0 To 9

                                If table(m, n) = 0 Then

                                    If cwin(m, n, i) = True Then

                                        yuandian(m * 30 + 10, n * 30 + 10)

                                        table(m, n) = 1

                                        For dc = 0 To 191

                                            If pwin(m, n, dc) = True Then

                                                pflag(dc) = False

                                                checkwin()

                                                Exit Sub

                                            End If

                                        Next

                                    End If

                                End If

                            Next

                        Next

                End Select

            End If

        Next

        For i = 0 To 191

            If pflag(i) = True Then

                pab = 0

                For j = 0 To 9

                    For k = 0 To 9

                        If table(j, k) = 2 Then

                            If pwin(j, k, i) = True Then

                                pab = pab + 1

                            End If

                        End If

                    Next

                Next

                Select Case pab

                    Case 3

                        For m = 0 To 9

                            For n = 0 To 9

                                If table(m, n) = 0 Then

                                    If pwin(m, n, i) = True Then

                                        pscore(m, n) = pscore(m, n) + 30

                                    End If

                                End If

                            Next

                        Next

                    Case 4

                        For m = 0 To 9

                            For n = 0 To 9

                                If table(m, n) = 0 Then

                                    If pwin(m, n, i) = True Then

                                        yuandian(m * 30 + 10, n * 30 + 10)

                                        table(m, n) = 1

                                        For dc = 0 To 191

                                            If pwin(m, n, dc) = True Then

                                                pflag(dc) = False

                                                checkwin()

                                                Exit Sub

                                            End If

                                        Next

                                    End If

                                End If

                            Next

                        Next

                End Select

            End If

        Next

        ''' ********                   电脑加强算法结束                       ********

 


附件:
    关闭窗口
    打印文档
    账号登录
    保持登录 忘记密码?
    账号与武进教师培训平台同步