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

                                                 五子棋的人工智能

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

                                                                                    作者:张宇

    

                                                 第二部分       使用{域名已经过期}编写五子棋

一,编写前的准备:

1,  用计算机的思想描述整个下棋的过程。

考虑步骤:

(1)为了简便我们可以先让电脑先走第一步棋,电脑每走一步就会封掉许多玩家的获胜可能情况。

(2)当玩家走棋的时候我们首先应该考虑玩家走棋的合法性。

(3)如果合法,那么玩家也会封掉许多电脑的获胜的可能情况。

(4)电脑的思考路径:首先判断当前玩家和电脑的所有获胜组合是否需要进行加强赋值,

是进行加强赋值,否则进行普通的赋值。

(5)比较当前玩家和电脑谁的分值最大。将分值最大的点作为电脑的下一步走法。

2,  利用{域名已经过期}窗体和图形工具建立五子棋的棋盘界面。

(1)添加一个picturebox控件。

              作用:使用picturebox控件绘制棋子和棋盘

(2)添加一个label控件。

              作用:显示当前的获胜标志,也就是当某一方获胜或和棋时显示此标签。

(3)添加一个mainmenu控件。

              作用:控制游戏的开始或结束。

(4)添加一个mediaplay组件。

              作用:使程序可以播放音乐。

3,设置整体框价

       我们采取10*10的棋盘,为主要的平台。利用数组定义整个棋盘桌面,利用数组定义获胜组合以及获胜标志等。

二,声明全局数组和变量

定义虚拟桌面:

Dim table(9, 9) As Integer

定义当前玩家桌面空格的分数:

Dim pscore(9, 9) As Integer

定义当前电脑桌面空格的分数:

Dim cscore(9, 9) As Integer

定义玩家的获胜组合:

Dim pwin(9, 9, 191) As Boolean

定义电脑的获胜组合:

Dim cwin(9, 9, 191) As Boolean

定义玩家的获胜组合标志:

Dim pflag(191) As Boolean

定义电脑的获胜组合标志:

Dim cflag(191) As Boolean

定义游戏有效标志:

Dim theplayflag As Boolean

三,初始化游戏

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

    '** 模块名称:  initplayenvironment

    '**

    '** 描述:        此函数主要功能如下:

    '**                 1. 设置背景音乐。

    '**                 2. 设置游戏状态有效。

    '**                 3. 初始化游戏状态标签。

    '**                 4. 直接指定电脑的第一步走法。

    '**                 5. 初始化基本得分桌面。

    '**                 6. 电脑和玩家获胜标志初始化。

    '**                 7. 初始化所有获胜组合。

    '**                 8. 重新设定玩家的获胜标志。

    '**

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

    Sub initplayenvironment()

        player.FileName = ".\music\zhyu01.mid"

        player.Play()

        theplayflag = True

        '游戏有效

        Label1.Visible = False

        '游戏状态标签不显示

        PictureBox1.Refresh()

        '清空picturebox1的内容

        yuandian(130, 130)

        '调用绘图函数绘制当前电脑先走的位置

        Dim i, j, m, n As Integer

        For i = 0 To 9

            For j = 0 To 9

                table(i, j) = 0

            Next

        Next

        '桌面初始化

        For i = 0 To 191

            pflag(i) = True

            cflag(i) = True

        Next

        '获胜标志初始化

        table(4, 4) = 1

        '由于我们设定电脑先手,并下了4,4位所以将其值设为1

        ''' ********                       初始化获胜组合                 ********

        n = 0

        For i = 0 To 9

            For j = 0 To 5

                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 9

            For j = 0 To 5

                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 5

            For j = 0 To 5

                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 5

            For j = 9 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 191

            If pwin(4, 4, i) = True Then

                pflag(i) = False

            End If

        Next

        '由于电脑已下了4,4位所以我们需要重新设定玩家的获胜标志

    End Sub


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