你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
五子棋人工智能权重估值算法(五)
 

为了在窗体棋盘上某一点恰当地估值,需要分析在该点处的落子前后棋形之差异。而棋形判断函数又分为单线和多线两类,多线以单线为基础,再利用数组排序选出最高的两值作为多线棋形判断依据。单线棋形制约因素主要有三个:棋子数、端堵情况和空子数。实现的核心代码如下:

Public Function JudgeLineNum(ByRef PieceTar() As Integer, ByVal Xt%, ByVal Yt%, ByVal XInt%, ByVal YInt%, ByVal ArrNum As Byte, ByVal Flag As Byte) As Byte

'单线棋形判断函数,用来判断棋形并计算相应分值;参数ArrNum代表的是储存方向情况与得分情况的数组成员序号,定义为1(1,0)2(1,1)3(0,1)4(-1,1);实现算法的关键是基础的单线棋形的判断与反馈

    Dim ExitFor As Boolean, LB As Boolean, RB As Boolean, PieceNum%, EmptyNum%, i%, Xtmp%, Ytmp%, Count%, Score%, Value%

    Xtmp = Xt: Ytmp = Yt: PieceNum = 1: EmptyNum = 0: Count = 0 '初始时棋子个数为1

    For i = 1 To 4 '计算第一个方向

        ExitFor = True '循环开始处初始化跳出记录变量为真

        Count = Count + 1

        Xt = Xtmp - i * XInt: Yt = Ytmp - i * YInt

        If Xt < 1 Or Xt > 15 Or Yt < 1 Or Yt > 15 Then LB = True: Exit For

'如果减去递增变量后坐标出界,则左堵为真

        If PieceTar(Xt, Yt) = Flag Then PieceNum = PieceNum + 1

'若下一位置处棋子类型相同,则将相同棋子记录变量加1

        If PieceTar(Xt, Yt) = IIf(Flag = 1, 2, 1) Then LB = True: Exit For

'该位置处棋子类型相反,则左堵为真

        If PieceTar(Xt, Yt) = 0 Then

            Xt = Xt - XInt: Yt = Yt - YInt '若该位置处为空格,则进一步判断下一个位置

            If Xt < 1 Or Xt > 15 Or Yt < 1 Or Yt > 15 Then LB = False: Exit For

'若下一个位置出界,则左堵为假

            If PieceTar(Xt, Yt) = 0 Then LB = False: Exit For

'若下一个位置仍为空格,则左堵为假

            If PieceTar(Xt, Yt) = Flag Then EmptyNum = EmptyNum + 1

'若空后位置处与目标棋子类型相同,则将空格数加1

            If PieceTar(Xt, Yt) = IIf(Flag = 1, 2, 1) Then LB = False: Exit For

'若空位置后为相反棋子类型则左堵亦为假

        End If

        ExitFor = False

    Next i

    If ExitFor = False Then

        Xt = Xt - XInt: Yt = Yt - YInt

        If Xt < 1 Or Xt > 15 Or Yt < 1 Or Yt > 15 Then

            LB = True '若最后一子后一位置出界,则左堵为真

        ElseIf PieceTar(Xt, Yt) = 0 Then LB = False

        ElseIf PieceTar(Xt, Yt) = IIf(Flag = 1, 2, 1) Then LB = True

        End If

   Else: Count = Count - 1 '提前跳出循环的情况下,在(XInt,YInt)方向上最多只能有(Count-1)个子

    End If

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089