五子棋游戏软件设计.docx
- 文档编号:1318464
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:21
- 大小:882.06KB
五子棋游戏软件设计.docx
《五子棋游戏软件设计.docx》由会员分享,可在线阅读,更多相关《五子棋游戏软件设计.docx(21页珍藏版)》请在冰豆网上搜索。
五子棋游戏软件设计
目录
摘要2
1引言3
1.1问题的提出3
1.2国内外研究的现状3
1.3人工智能4
1.3.1五子棋数学思想4
1.3.2五子棋人工智能5
1.4任务与分析5
2.总体设计方案7
2.1算法设计7
2.1.1总体框架图7
2.1.2五子棋胜负判断算法8
2.1.2五子棋人工智能算法8
3程序运行平台11
1.开发环境11
2.运行环境11
4.模块分析12
4.1主界面模块12
4.2棋盘的设计模块13
4.3棋盘的鼠标事件操作模块14
4.4五子棋棋子设计模块15
4.5五子棋的胜负判断模块15
4.6五子棋的人工智能模块17
5.系统测试21
6.结论25
致谢26
参考文献27
摘要
近来,随着计算机的快速发展,以计算机作为对战平台,各种棋类游戏如雨后春笋般纷纷冒出,使得那些喜爱下棋,有常常苦于没有对手的棋迷们能随时过足棋瘾,而且这类软件个个水平颇高,大有与人脑分庭抗礼之势。
其中战胜过国际象棋世界冠军—卡斯帕罗夫的“深蓝”便是最具说服力的代表。
当我们与电脑对战对时,您知道这些软件是怎样像人脑一样进行思考的吗?
总的来说(我们假定您熟悉五子棋的基本规则),要让电脑知道该在哪一点下子,就要根据盘面的形式,为每一可能落子点计算其重要程度,也就是当这子落下后会形成什么模型,然后通览全盘选出最重要的一点,这便是最基本的算法。
当然,仅靠当前盘面进行判断是远远不够的,这样下棋很容易掉进玩家设下的陷阱,因为它没有考虑以后的变化。
所以在此基础上我们需要使用好的算法是电脑能预测出今后几步的各种走法,以便做出最佳选择,这也是我们下棋时常说的“想了几步”。
怎样才能达到这个程度呢?
这是本文所要讨论的主要问题。
作为一个五子棋游戏爱好者,在使用了众多的五子棋游戏软件后,发现当今大多数五子棋游戏软件中电脑的AI(人工智能)值不是很高,难与人脑抗衡,这是基于以上的最基本算法扩展而出的电脑最优落子算法不够优秀而造成的。
本人使用JAVA语言作为开发工具,在吸收别人所编的五子棋游戏软件的基础上,再融入自己的创新思想(最优落子算法的改进),编写了这个五子棋游戏,软件实现了人机对弈和双人对弈的功能,游戏软件界面美观,操作容易,电脑的AI值也较高。
关键字:
五子棋、人工智能、JAVA
1引言
1.1问题的提出
五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。
发展于日本,流行于欧美。
容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。
它是中西文化的交流点,是古今哲理的结晶。
1.2国内外研究的现状
近来,随着计算机的快速发展,以计算机作为对战平台,各种棋类游戏如雨后春笋般纷纷冒出,使得那些喜爱下棋,有常常苦于没有对手的棋迷们能随时过足棋瘾,而且这类软件个个水平颇高,大有与人脑分庭抗礼之势。
其中战胜过国际象棋世界冠军—卡斯帕罗夫的“深蓝”便是最具说服力的代表。
当我们与电脑对战对时,您知道这些软件是怎样像人脑一样进行思考的吗?
总的来说(我们假定您熟悉五子棋的基本规则),要让电脑知道该在哪一点下子,就要根据盘面的形式,为每一可能落子点计算其重要程度,也就是当这子落下后会形成什么模型,然后通览全盘选出最重要的一点,这便是最基本的算法。
当然,仅靠当前盘面进行判断是远远不够的,这样下棋很容易掉进玩家设下的陷阱,因为它没有考虑以后的变化。
所以在此基础上我们需要使用好的算法是电脑能预测出今后几步的各种走法,以便做出最佳选择,这也是我们下棋时常说的“想了几步”。
怎样才能达到这个程度呢?
这是本文所要讨论的主要问题。
作为一个五子棋游戏爱好者,在使用了众多的五子棋游戏软件后,发现当今大多数五子棋游戏软件中电脑的AI(人工智能)值不是很高,难与人脑抗衡,这是基于以上的最基本算法扩展而出的电脑最优落子算法不够优秀而造成的。
本人使用JAVA语言作为开发工具,在吸收别人所编的五子棋游戏软件的基础上,再融入自己的创新思想(最优落子算法的改进),编写了这个五子棋游戏,软件实现了人机对弈和双人对弈的功能,游戏软件界面美观,操作容易,电脑的AI值也较高。
1.3人工智能
1.3.1五子棋数学思想
可能很少有人注意到,五子连珠游戏其中包含着一个极为深刻的数学问题。
为什么不是四子连珠,或者是六子连珠?
你可能会说,四子连珠,那就太容易啦,下几步就胜了。
而六子连珠呢,则太难了,谁也别想连成。
这就说明,五子连珠极可能是一个最佳攻守平衡值,一个达成连珠的最大值。
增一子、减一子都会打破这个平衡。
四子连珠太易,攻方处于绝对优势;而六子连珠太难,守方处于绝对优势。
而游戏规则必须是让游戏双方处于平等的位置才可能进行,否则游戏就不成其为游戏。
要想黑白棋连珠成为一种符合游戏规则的智力游戏,五子连珠无疑是一个最佳方案。
中华民族的祖先在发明五子连珠的过程中,猜想肯定也不是一蹴而就,而是极可能经历了四子连珠、六子连珠的尝试过程,最后才确定为五子连珠,并流行开来。
这个问题,被当代科普作家傅小松称之为五子连珠问题,又称五子连珠猜想。
其准确表述是:
在以横线、竖线互相交叉(一般各为15条)的方形平面(棋盘)中,黑白两种“点”(棋子)先后沿横线、竖线排列(行棋),在平面(棋盘)横线、竖线、斜线(无实线连接)上形成连续的同色“点”(棋子),五个“点”(棋子)为可能达成连珠的最大值。
五子连珠是黑白棋连珠的一个最佳方案,这在实际中早已不会有人怀疑。
并且,五子连珠已经存在并发展了几千年,成为了一种趣味性强,同时技巧比较复杂、竞争激烈的棋类游戏,与围棋、国际象棋、中国象棋的巧妙性、复杂性也有一拼。
这似乎足以证明五子连珠的最佳性。
但从科学真理的角度看,一万次实践的证明也不能代替逻辑和数学上的证明。
要确定五子连珠是黑白棋连珠的一个最佳方案,五子连珠是一个最佳值、最大值,必须进行数学上的证明。
“五子连珠问题”的证明可能非常复杂,这是因为,第一,它不是一个静态的问题,而是一个动态的问题。
棋盘是一个静态的二维平面,但行棋博弈是一个的动态的过程。
第二,这不是一个线性和确定性问题的,而是一个非线性和模糊性问题。
所谓“五子连珠”的最佳值,是在千变万化的攻与防中达到的一种默契。
因此,要解决“五子连珠猜想”,可能要运用到博弈论、模糊数学等工具。
1.3.2五子棋人工智能
人工智能(ArtificialIntelligence,简称AI)是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一(空间技术、能源技术、人工智能)。
也被认为是二十一世纪(基因工程、纳米科学、人工智能)三大尖端技术之一。
这是因为近三十年来它获得了迅速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,人工智能已逐步成为一个独立的分支,无论在理论和实践上都已自成一个系统。
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。
人工智能将涉及到计算机科学、心理学、哲学和语言学等学科。
可以说几乎是自然科学和社会科学的所有学科,其范围已远远超出了计算机科学的范畴,人工智能与思维科学的关系是实践和理论的关系,人工智能是处于思维科学的技术应用层次,是它的一个应用分支。
从思维观点看,人工智能不仅限于逻辑思维,要考虑形象思维、灵感思维才能促进人工智能的突破性的发展,数学常被认为是多种学科的基础科学,数学也进入语言、思维领域,人工智能学科也必须借用数学工具,数学不仅在标准逻辑、模糊数学等范围发挥作用,数学进入人工智能学科,它们将互相促进而更快地发展。
1.4任务与分析
设计一程序能完成五子棋游戏功能。
五子棋规则:
双方各执一色棋子,轮流下子(即将棋子放在棋盘的任一空交叉点上),直到有一方的棋子有5个排成一线(无论是横向、竖向还是斜向均可),则棋局结束,该方胜利。
(1)设计游戏的核心算法;
(2)设计可视化的界面且双方所使用的两色棋子和彩色棋盘得体大方、比例当;
(3)双方轮流用键盘或鼠标下子。
只有当鼠标单击在棋盘网格交叉点附近时才可下子,点击其他地方及已有子的位置不能下子,且应给出相应提示;
2.总体设计方案
2.1算法设计
2.1.1总体框架图
图2.1.1系统总体框架图
2.1.2五子棋胜负判断算法
五子棋的胜负(该软件默认是人下黑棋,电脑下白棋),在于判断棋盘上是否有一个点,从这个点开始的右、下、右下、左下四个方向是否有连续的五个同色棋子出现,如图下图所示:
图11判断胜负方向
2.1.2算法流程图
每当在棋盘上下一个棋子后,需要判断这个棋子的四个方向是否有连续的五个同色的棋子出现,这个需要一个二维数组来存储来存每个棋盘的坐标的颜色,还需要在每次下了棋子之后,遍历该棋盘的所有获胜的组合,来实现判断胜负。
2.1.2五子棋人工智能算法
当人下了一个棋子之后(人作为后手的第一次除外),电脑需要对棋盘进行全面的评估。
1、获胜组合是一个三维数组,它记录了所有取胜的情况。
也就是说,对于每一个落子坐标,获胜的组合一共有
15*11*2+11*11*2=572种。
而对于每个坐标的获胜组合,应该设置一个[15][15][572]大小的三维数组。
在拥有了这些获胜组合之后,就可以参照每个坐标的572种组合给自己的局面和玩家的局面进行打分,也就是根据当前盘面中某一方所拥有的获胜组合多少进行权值的估算,给出最有利于自己的一步落子坐标。
由于是双方对弈,所以游戏的双方都需要一份获胜组合,也就是:
privateboolean[][][]white_Win=newboolean[15][15][572];
//电脑的获胜组合
privateboolean[][][]black_Win=newboolean[15][15][572];
//人的获胜组合
在每次游戏初始化的时候,需要将每个坐标下可能的获胜组合都置为true。
此外,还需要设置计算机和玩家在各个获胜组合中所填入的棋子数:
privateint[][]win_Count=newint[2][572];
//int[0][X]为人(黑棋)的获胜组合中的棋子数
//int[1][X]为电脑(白棋)的获胜组合中的棋子数
在初始化的时候,将每个棋子数置为0。
2、每当一方落子后,都需要作如下处理:
如果己方此坐标的获胜组合仍为true,且仍有可能在此获胜组合处添加棋子,则将此获胜组合添加棋子数加1;
如果对方此坐标的获胜组合仍为true,则将对方此坐标的获胜组合置为false,并将对方此获胜组合添加棋子数置为-1(不可能靠此组合获胜)。
白棋为例:
for(inti=0;i<572;i++){
if(white_Win[x][y][i]&&win_Count[1][i]!
=-1){
win_Count[1][i]++;
}
if(black_Win[x][y][i]){
black_Win[x][y][i]=false;
win_Count[0][i]=-1;
}
}
3、该电脑下棋的时候需要遍历棋盘所有的没有棋子的坐标
4、找出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 游戏软件 设计