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

                                                 五子棋的人工智能

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

                                                                                    作者:张宇

    四,处理鼠标事件

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

    '** 模块名称:  themousedown

    '**

    '** 描述:       此函数主要实行以下功能:

    '**                 1. 判定当前游戏标志是否有效。

    '**                 2. 将实际坐标转化成虚拟坐标。

    '**                 3. 绘制玩家的棋子。

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

    '**                 5. 执行电脑算法函数。

    '**

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

    Sub themousedown(ByVal x As Integer, ByVal y As Integer)

        If theplayflag = False Then

            Exit Sub

        End If

        '检查游戏状态是否有效

        Dim i, j As Integer

        Dim zhx, zhy As Integer

        zhx = Int((x - 10) / 30)

        zhy = Int((y - 10) / 30)

        For i = 0 To 9

            For j = 0 To 9

                If table(zhx, zhy) > 0 Then

                    Exit Sub

                End If

            Next

        Next

        '检查当前鼠标点击的格子是否有效

        Dim mycolor As Color

        Dim g As System.Drawing.Graphics

        g = PictureBox1.CreateGraphics

        mycolor = Color.White

        Dim brush1 As System.Drawing.Brush = New SolidBrush(mycolor)

        g.FillEllipse(brush1, zhx * 30 + 10, zhy * 30 + 10, 30, 30)

        '绘制玩家的棋子

        table(zhx, zhy) = 2

        For i = 0 To 191

            If cwin(zhx, zhy, i) = True Then

                cflag(i) = False

            End If

        Next

        '重设电脑的获胜标志

        checkwin()

        '检查当前玩家是否获胜

        diannao()

        '调用电脑算法

    End Sub

五,获胜检查算法。

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

    '** 模块名称:  checkwin

    '**

    '** 描述:       此模块执行以下功能:

    '**                 1. 检查是否和棋。

    '**                 2. 检查电脑是否获胜。

    '**                 3. 检查玩家是否获胜。

    '**

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

    Sub checkwin()

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

        Dim ca As Integer

        Dim pa As Integer

        Dim cnormal As Integer = 0

        For i = 0 To 191

            If cflag(i) = False Then

                cnormal = cnormal + 1

            End If

        Next

        If cnormal = 190 Then

            Label1.Visible = True

            Label1.Text = "和棋,请重新开始!"

            PictureBox1.Refresh()

            theplayflag = False

            Exit Sub

        End If

        '设定和棋规则

        For i = 0 To 191

            If cflag(i) = True Then

                ca = 0

                For j = 0 To 9

                    For k = 0 To 9

                        If table(j, k) = 1 Then

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

                                ca = ca + 1

                            End If

                        End If

                    Next

                Next

                If ca = 5 Then

                    Label1.Visible = True

                    Label1.Text = "电脑获胜,请重新开始"

                    PictureBox1.Refresh()

                    theplayflag = False

                    Exit Sub

                End If

            End If

        Next

        '检查电脑是否获胜

        For i = 0 To 191

            If pflag(i) = True Then

                pa = 0

                For j = 0 To 9

                    For k = 0 To 9

                        If table(j, k) = 2 Then

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

                                pa = pa + 1

                            End If

                        End If

                    Next

                Next

                If pa = 5 Then

                    Label1.Visible = True

                    Label1.Text = "玩家获胜,请重新开始"

                    PictureBox1.Refresh()

                    theplayflag = False

                    Exit Sub

                End If

            End If

        Next

        '检查玩家是否获胜

    End Sub


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