基于Qt的黑白棋游戏设计方案Word格式.docx
- 文档编号:13302672
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:50
- 大小:293.23KB
基于Qt的黑白棋游戏设计方案Word格式.docx
《基于Qt的黑白棋游戏设计方案Word格式.docx》由会员分享,可在线阅读,更多相关《基于Qt的黑白棋游戏设计方案Word格式.docx(50页珍藏版)》请在冰豆网上搜索。
黑白棋;
人工智能;
搜索算法;
Qt
ReversigamebasedonQt
Abstract
ThispaperdescribestheOthellogamedesignanddevelopmentprocessanddiscusseddifferentdesignprinciplesandfeaturesofthesearchalgorithm.Fromtheadvancementofgametreesearchalgorithmtoreflectadvancesinthedevelopmentofartificialintelligence.Thisprogramistheuseofobject-orientedC++languagedevelopmentunderLinux(Ubuntu12.04LTS)environment.Implementsthefollowingfunctions,man-machinetowar,multiplayer,undo,etc.InthisthesispointsoutthedevelopmentstatusofReversigame,Qtandcomputergame.ThenfocusesontheusageofQtdevelopmenttools,Othelloprogramdesignprocess(includingclassdiagrams,casediagram,sequencediagramdesignwith),rulesdesign,algorithmdesign.Finally,thedevelopmenttrendofLinuxdesktopenvironmentGUIandcomputergame.
Bydevelopingachessgame,describesthedevelopmentprocessofboardgames.Severalstepsincludinglogicalanalysisofsoftwaredevelopment,programdesign,softwareimplementationandsoftwaretesting.
Keywords:
Othello;
ArtificialIntelligence;
SearchAlgorithm;
Qt
1绪论
1.1前言
计算机博弈(ComputerGames),也称之为机器博弈,就是让计算机可以像人脑一样进行思维活动,最终可以下棋,下国际象棋、西洋跳棋、黑白棋、中国象棋、围棋等等。
早在计算机诞生的前夜,著名的数学家和计算机学家阿伦·
图灵(AlanTuring)便设计了一个能够下国际象棋的纸上程序,并经过一步步的人为推演,实现了第一个国际象棋的程序化博弈。
那些世界上最著名的科学家,如计算机创始人冯.诺依曼(JohnvonNeumann),信息论创始人科劳德.香农(ClaudeE.Shannon),人工智能的创始人麦卡锡(JohnMcCarthy)等人都曾涉足计算机博弈领域,并做出过非常重要的贡献。
从上世纪40年代计算机诞生,计算机博弈经过一代又一代学者的艰苦奋斗和坎坷历程,终于在上世纪的八、九十年代,以计算机程序战胜棋类领域的天才而享誉世界。
其中最为著名的则是1997年5月IBM“深蓝”战胜世界棋王卡斯帕罗夫,成为计算机科学史上一个不朽的丰碑。
在这之后,计算机博弈一天也没有停息过拼搏。
由《Science》杂志评选的2007年十大科技突破中,就还包括了加拿大阿尔波特大学的科研成果——解决了西洋跳棋(Checker)博弈问题,也就是说,在西洋跳棋的博弈中计算机将永远“立于不败之地”。
计算机博弈原理与方法学既涉及到博弈论(对策论)、搜索原理等理论内容,又更多地涉及到数据结构、软件工程、程序设计方法学等方面的知识。
计算机博弈属于计算机科学与应用学科的研究方向之一,又是人工智能领域的重要研究方向,应该属于智能科学与技术学科的一个分支。
本文着重介绍了黑白棋的设计与开发,通过介绍博弈算法与程序设计的基本流程让您对计算机博弈原理与方法以及程序设计有更深入的了解。
1.2黑白棋的发展
黑白棋是起源于英国19世纪末的一种棋盘类游戏,又叫反棋(Reversi)、奥塞罗棋(Othello)、苹果棋或翻转棋。
游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。
为什么以奥塞罗棋来命名黑白棋呢?
上世纪70年代日本人GoroHasegawa借用莎士比亚名剧“奥塞罗”为黑白棋重新命名。
在莎士比亚笔下的主角——奥塞罗,是一位黑肤色的摩那人将军,他的妻子是一位白人贵族的女儿——苔丝狄蒙娜(Desdemon),因为受到小人——伊阿古(Iago)的挑拨离间,怀疑自己的妻子不忠而亲手杀死了自己的妻子。
真相大白后,由于内心充满后悔和愧疚而自杀身亡。
就如同奥塞罗据中男女主角之间的爱恨纠葛一样,黑白棋在游戏的过程中黑子与白子必须不断翻动对手棋子,因此黑白棋就以Othello来命名。
1.2.1黑白棋程式的发展
上世纪90年代初,由于计算深度和尾局的准确性,黑白棋程式的棋力已经很强。
这个时期的程式由人工加入行动力、位置策略等因素,所以程式的棋力依赖于程式员本身的棋力,导致程式中存在人类棋手的弱点。
这一情况在1995年左右得到了突破性的发展,程式员MichaelBuro写出了能自我学习的黑白棋游戏Logistello。
自此,程式员不在把人工策略写死在程式里,而是由程式自我学习,程式会纪录形状,自动调整下棋策略。
具有先进算法,高效率和准确的编程,使黑白棋程式的棋力远远超过人类棋手。
黑白棋算法的不断改进,体现了人工智能(AI)的发展。
1.2.2游戏规则
游戏开始时棋盘正中有交叉放置的四个棋子,两黑两白,黑棋总是先手。
双方交替下棋。
新落下的棋子与棋盘上已有同色棋子之间,被夹住得所有对方棋子都要翻转过来。
且夹住位置上必须全部是对手的棋子,不能有空格。
一步棋可以在数个方向上翻棋,任何被夹住得棋子必须被翻转过来。
如果一方在棋盘上没有地方可以落子,则对手可以连续落子。
双方都没有棋子可落时,棋局结束,棋子数目多的一方获胜。
在棋盘还没有下满是,如果一方棋盘上没有棋子,则棋局结束。
将对手棋子吃光的一方获胜。
1.2.3开局策略
黑白棋最常见的开局策略有以下几种:
最多子策略(TheMaximumDiscStrategy)
位置权重策略(TheWeightedSquareStrategy)
行动能力策略(TheMobilityConsiderationStrategy)
稳定子策略(TheStabilityDiscStrategy)
这四种开局策略各有优缺点,以下会对其简单介绍:
(1)最多子策略(TheMaximumDiscStrategy)
此策略采用贪心算法,是最直接简单的一种策略。
此策略在落子时,会判断在哪个位置落子可以造成己方棋子数目最多,即可以翻转对手棋子最多的位置,从而取得胜利。
虽然使用此策略会在初期占据大量棋子并取得优势,但是占据的棋子并非不会再被对手所占据的稳定子,且让对手有更多落子的位置的选择。
因此很容易被对方逆转局面,失去领先地位。
(2)位置权重策略(TheWeightedSquareStrategy)
棋盘上每个位置都有各自对整个盘面变化产生的价值,因此将每个位置不同的价值作为落子时考虑的权重,如图1-1所示在角落位置(*)因为对盘面有较大的影响力,因此也就拥有比其他位置较高的权重,一旦占领角落后,不仅此位置不会被对手再占领,且将可以此位置为锚,进而占领盘面上其他的位置,所以在位置权重策略上对角落位置给予较高权重。
而在盘面上C与X被赋予较低的权重,因为落子在这些位置时有可能对盘面发展状况造成不利的影响,落子在C、X会让对手有机会占领角落,而让自己处于不利局面。
此外在A、D位置会给予次高的权重,落子在这些位置时,将有可能让对手被迫落子在C、X位置,而陷于困境,因此A、D位置有次高权重。
(3)行动能力策略(TheMobilityConsiderationStrategy)
以合法步的数量来决定其行动能力的状态,如果是对手可下的合法步数量少得话,将会使对手无合法步可以落子发生pass,或是被迫下在不利位置(如图1-1C、X位置)。
(4)稳定子策略(TheStabilityDiscStrategy)
落子时考虑落子的位置将会造成多少稳定子来决定该下在哪里,稳定子即无法再被对手所翻动的棋子。
在上述的策略中,每一种策略都有其应用的情况,也有其不足之处,所以在一盘棋局中不能只采用一种策略,最好的方式应该是在面对不同的棋局情况时采用对应的策略。
图1-1位置权重策略示意图
1.3机器博弈与人工智能的发展概况
1.3.1机器博弈的基本思想
机器博弈的核心思想并不复杂,实际上就是对博弈树节点的估值过程和对博弈树搜索过程的结合。
在博弈的任何一个中间阶段,站在博弈双方其中一方的立场上,可以构想一个博弈树。
这个博弈树的根节点是当前时刻的棋局,它的儿子节点是假设再行棋一步以后的各种棋局,孙子节点是从儿子节点的棋局再行棋一步的各种棋局,以此类推,构造整棵博弈树,直到可以分出胜负的棋局。
整棵的博弈树非常庞大,且不同的棋类有所不同,分支因子大的如围棋的博弈树显然要比分支因子小的如国际象棋的博弈树要大得多。
博弈程序的任务就是对博弈树进行搜索找出当前最优的一步行棋。
对博弈树进行极大极小搜索,可以达到这一目的。
极大极小搜索,是因为博弈双方所要达到的目的相反,一方要寻找的利益恰是一方失去的利益,所以博弈的一方总是希望下一走是儿子节点中取值最大者,而另一方恰恰相反。
这便形成了极大极小过程。
当然,程序不能也没有必要做到搜索整棵博弈树的所有节点,对于一些已经确定为不佳的走步可以将以它为根节点的子树剪掉。
而且,搜索也不必真地进行到分出胜负的棋局,只需要在一定深度范围内对局面进行评价即可。
只有搜索空间缩小到一定程度,搜索才可以真正的进行。
当搜索进行到一定深度,用局面评价机制来评价棋局,按照极大极小的原则选出最优,向上回溯,给出这一局面的父亲节点的价值评价,然后再继续向上回溯,一直到根节点,最优走步就是这样搜索出来的。
在这个过程中,最为重要的是搜索算法,高效的搜索算法可以保证用尽量少的时间和空间损耗来达到寻找高价值的走步。
但是真的想要博弈程序棋力提高,还必须有一个好的局面评价机制,即估值算法作后盾。
就是说,用这个估值算法评价的局面价值必须是客观的、正确的,可以确凿的评价局面的优劣以及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Qt 白棋 游戏 设计方案