关闭

人机博弈之(一)------博弈介绍

标签: 游戏数据结构算法编程c
2427人阅读 评论(1) 收藏 举报
分类:

       爱好编程的大部分还是喜欢自己编写一个游戏,但较少是编写和电脑对战的游戏,因为里面毕竟涉及博弈,搜索等技术,我想来通编写一个人机博弈的中国象棋游戏,希望从中收获些东西。参考书是王小春编著的一本《PC游戏编程-人机博弈》。应该说里面很多思想都是来自这本书上的,虽然思想不是源自我自己,但是可以通过自己亲手从头到尾把这个游戏编写出来,主要体会里面搜索技术和估值核心。

1. 人机博弈的要点

人机对弈的程序,至少应具备一下几个部分:

     a   某种在机器上表示棋局的方法,让程序知道博弈的状态;
     b    产生合法的走法规则,是得博弈双方公正,并可以判断人类对手是否乱走;
     c   从所有合法的走法中选择最佳的走法的技术
     d   一种评估局面优劣的方法,同上面技术配合作出智能选择;
     e   一个实现游戏的界面。

2.棋盘表示

棋盘表示就是用一种数据结构来描述棋盘和棋盘上的棋子,通常是用2维数组。一个典型的中国象棋棋盘是用一个9x10的二维数组表示。

3. 走法产生

博弈的规则哪些走法是合法的,例如对于中国象棋来说的马走日,象走田等一些规则。

4. 搜索技术
对于计算机来说,直接通过棋盘信息来判别走法的好坏并不精确。除了输赢这种局面可以可靠地判别外,
其他的判断只能大致估计。判别两种走法谁优谁劣的一个好方法就是察看棋局走下去的结果。也就是向
下搜索若干步,然后比较发展的结果。为了避免差错,也要假设对手的思考也和我们一样,也就是,我
们想到的内容,他也想到了。这是极大值和极小值算法的基本原则。此算法的复杂度是指数级别。所以
随着搜索深度的加大,时间开销会急剧增大。搜索技术的非常关键。

5. 估值
由于,现有的计算机的运算能力不可能一直搜索到分出胜负的那步,在有限搜索深度的末端,用一些静
态的方法,来估计局面的好坏。所以这里要设计一个好的估值函数。

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:139756次
    • 积分:1801
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:4篇
    • 译文:0篇
    • 评论:23条
    最新评论
    计算机外文网站