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

1. 人机博弈的要点

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

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

2.棋盘表示

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

3. 走法产生

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

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

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

人机博弈之(一)------博弈介绍相关推荐

  1. 博弈论总结 必胜点 SG函数 巴什博弈 尼姆博弈

    摘要 主要算法思想,应用领域,近年来的出题情况 博弈是信息学和数学试题中常会出现的一种类型,算法灵活多变是其最大特点,而其中有一类试题更是完全无法用常见的博弈树来进行解答. 寻找必败态即为针对此类试题 ...

  2. UR机器人装箱姿态_关于人机协作机器人UR的介绍

    原标题:关于人机协作机器人UR的介绍 在这几年,各大工业机器人制造商,目前都热衷与人机协作,ABB的"玉米",FANUC的"绿手臂",KUKA的"伊娃 ...

  3. ferguson博弈_组合博弈游戏

    ² 组合博弈游戏的概念和特点 ² 组合博弈游戏应满足以下性质: ² 1. 有两个游戏者. ² 2. 有一个可能的游戏状态集.这个状态集通常是有限的. ² 3. 游戏规则指定了在任何状态下双方的可能的走 ...

  4. 1.3 博弈结构和博弈的分类

    1.3.1 博弈中的博弈方 博弈方:独立决策.独立承担博弈结果的个人或组织 博弈规则面前博弈方之间平等,不因博弈方之间权利.地位的差异而改变 博弈方数量对博弈结果和分析有影响 根据博弈方数量分单人博弈 ...

  5. 首都师范 博弈论 6 3 1子博弈与子博弈完美均衡的概念

    6 3 1子博弈与子博弈完美均衡的概念

  6. 人机混合智能在博弈领域的发展

    [编者按:博弈向来是人机环境系统的智能,而不仅仅是人的智能,或许,西方的博弈论里存在着很大的缺陷] ----------------------------------- 博弈论又被称为对策论(Gam ...

  7. C语言实现在15*15的大棋盘中下五子棋(支持人机博弈,人人博弈)

    目录 最终效果展示 一:test.c 1.main函数 2.menu函数 3.game函数 4.game_plus函数 5.完整代码 二:game.c 1. Initboard函数(初始化棋盘) 2. ...

  8. 五子棋人机对弈代码——之博弈树算法

    #include<iostream.h> #include<stdlib.h> #include<string.h> #include<time.h> ...

  9. 博弈——威佐夫博弈(hdu1527,2177)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1527 题目描述: 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不 ...

  10. 组合博弈 -- 三大基本博弈

    转自:http://blog.csdn.net/luomingjun12315/article/details/45479073 我国民间有个古老的游戏:就是有物品若干堆,(物品可以是火柴,围棋都可以 ...

最新文章

  1. Java黑皮书课后题第5章:**5.33(完全数)如果一个正整数等于除它它本身外其他所有除数之和。就称之为完全数。如6是第一个完全数,因为6=1+2+3。10000以下的完全数有4个,编写程序找出
  2. 第一次失效_神兵小将:净化之力失效地魔兵兽,全靠特殊办法,铁心方式真霸气...
  3. qemu+linux+x86+64,kvm 内部错误:无法找到适合 x86_64 的模拟器
  4. cmd小游戏_使用pygame制作Flappy bird小游戏
  5. uniapp 移动端上传文件_基于 uniapp 实现动态路由和动态 Tabbar
  6. iframe高度自适应 1
  7. 计算机网络第五次笔记
  8. How to use neural network to realize logic 'and' and 'or'?
  9. Springboot项目jar包部署Linux
  10. 关于特效表现与资源优化
  11. 数学建模——人口预测模型
  12. cfd计算机模拟,CFD软件数值模拟分析(中联智泵)
  13. 三星手机PIN码忘记锁机解决方法
  14. gitLab 修改文件夹名称
  15. [教学]基于crnn的中文汉字识别_pyqt界面交互界面python含代码
  16. excel制作随着日期的改变而变化的动态日历
  17. 网络口碑营销从“可以做”、“值得做”到了“必须做好”的阶段!
  18. MySQL Error 1114
  19. PhpStorm 正则 小写变大写
  20. 加州大学欧文计算机排名,2019加州大学欧文分校排名(USNews排名)

热门文章

  1. Berkeley DB Java Edition Installation Notes(BDB JE安装教程)
  2. 分享两个CAD模型网站
  3. P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]
  4. boss直聘zp_stoken逆向分析源码放送
  5. Selenium Chrome 查看网络请求
  6. [附源码]java毕业设计校园闲置物品交易
  7. linux dns中文域名,中国互联网协会-中文域名的使用:DNS服务器配置
  8. 开发项目时mysql常用语句_项目开发中常用到的SQL语句
  9. 华为云 服务器修改端口,【华为云服务之】修改华为云ECS服务器安全组
  10. 重庆微企获5000万元风投-平板电脑和手机菜单系统-家庭智能信息终端