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

原创 2007年09月23日 15:36:00

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

1. 人机博弈的要点

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

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

2.棋盘表示

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

3. 走法产生

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

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

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

 

博弈树搜索之alpha-beta剪枝——一步一步教你写一字棋智能程序

博弈树搜索在下图中,第一层节点表示开始局面,我方先走,第二层节点表示我方可走的三个位置,第三层节点表示对于我方的每一种走法对手的各种走法,下方数字代表了对每个局面的评价值。这里的评价值都是相对于我方来...
  • qq_27008079
  • qq_27008079
  • 2017年03月08日 11:20
  • 2467

计算机博弈教程 连载【一. 计算机博弈简史】

第一章     计算机博弈简史 计算机博弈(Computer Game),在某些时候也成为机器博弈,在近年来受到了越来越大的关注。博弈(GamePlaying)是一种竞争,而竞争现象广泛存在与社会活动...
  • HeavyIndustry
  • HeavyIndustry
  • 2015年06月16日 03:08
  • 1575

博弈之最大-最小搜索算法

最近正在做一个人工智能的中国象棋,所以不可避免的接触到了博弈论,因为考虑到以后还会有所涉及 (alpha-beta search),所以写成了一片文章 这里以中国象棋为前提,AI首先需要一个博弈树 (...
  • u013524455
  • u013524455
  • 2014年01月28日 16:00
  • 2908

PC游戏编程(人机博弈)

  • 2013年11月25日 23:06
  • 11.01MB
  • 下载

JAVA 五子棋 人机博弈

  • 2013年05月16日 22:45
  • 9.41MB
  • 下载

PC游戏编程(人机博弈)

  • 2012年12月10日 00:25
  • 8.44MB
  • 下载

PC游戏编程(人机博弈)

  • 2011年08月05日 10:41
  • 2.15MB
  • 下载

PC游戏编程_人机博弈_pdf_src

  • 2008年03月06日 16:08
  • 3.89MB
  • 下载

游戏编程(人机博弈)

  • 2007年06月17日 21:02
  • 5.3MB
  • 下载

PC 游戏编程(人机博弈)

  • 2009年02月05日 15:35
  • 5.18MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:人机博弈之(一)------博弈介绍
举报原因:
原因补充:

(最多只允许输入30个字)