Android五子棋游戏设计.doc
《Android五子棋游戏设计.doc》由会员分享,可在线阅读,更多相关《Android五子棋游戏设计.doc(21页珍藏版)》请在冰点文库上搜索。
九江学院
信息科学与技术学院
《Android》游戏设计期末大作业
题目:
五子棋游戏设计
专业:
软件技术
班级:
信B0931
姓名:
张华
学号:
20914160122
同组人员:
刘奇、钱峰
指导老师:
程霄
设计时间:
11年9月1日~12年1月15日
目录
《Android》游戏设计期末大作业 1
绪论 1
1.五子棋手机游戏概述 2
2.开发环境与工具介绍 3
3.需求分析与总体设计 4
4.详细设计 12
5.人机智能算法分析 15
6.软件测试 17
7.结论 18
8.参考文献 19
19
绪论
随着社会的发展,目前全球的手机用户数量已经超过了PC机的数量,而且手机的数量正在快速增长,其中智能手机所占的比例越来越大,特别是随着3G技术发展时代的到来,移动互联网将是一个巨大的市场,许多国际大公司以及国内的大公司都在抢占智能手机领域的市场份额。
这期间,出现的智能手机可谓五花八门,种类繁多,但是真正好用,受用户喜爱的智能手机并不多。
当互联网巨头Google宣布依靠android系统进军手机操作系统领域之后,三年来Android一路高歌,快速的获得众多用户和厂商的认同。
随着Android手机终端的逐渐热销,Android也引起众多手机应用程序开发商的关注,Android的出现带给了智能手机领域更多的机遇和挑战,由于Android基于Linux内核且具有开源、免费的特性,它迅速得到广大爱好者以及许多厂商的支持,基于Android所开发的手机游戏拥有巨大潜力已成为行业共识[1]。
3G的普及、手机显示性能的提高、手机屏幕的扩大和较高的分辨率,解决了传统手机行业的很多弊端,同时Android也采用了键盘形式的按键,可以完成更复杂的操作。
Android虽然基于Java,但是其虚拟机是基于寄存器的(这与普,速度得到很大的提升,这为Android平台上开发游戏通的Java基于堆栈不同)提供了坚强的后盾[2]。
随着移动开发技术的不断升级和终端设备成本的下降,近年来,手机在普通消费人群中得到了极大的普及。
凭借其便于携带、沟通迅捷、功能多样、私密性强等独有优势,手机已经成为普通民众不可替代的随身工具。
其益智、趣味和休闲的特点迎合了消费者的娱乐需要,手机游戏的开发推广已经成为手机生产商和运营商重要的业务增长点,游戏软件产业价值不断提升。
手机游戏是手机的一种高附加值操作软件,游戏编程是手机软件编程的重要组成,同时也持续推动手机软件技术升级进步。
中华民族是一个有着几千年悠久历史和璀璨文化的国家,而棋类娱乐却早已突破了纯游戏的范畴而成为中国传统文化的一个分支。
五子棋起源于中国古代的传统黑白棋种之一,现代五子棋日文称之为“连珠”,英译为Renju,英文称之为“Gobang”或“FIR”(FiveinaRow的缩写),中文亦有“连五子”“五子连”、“串珠”“五目”“五目碰”“五格”等多种称谓。
五子棋的棋文化源渊流长,具有东方的神秘和西方的直观,是中西文化的交流点,是古今哲理的结晶。
现在人们压力日益增大,需要劳逸结合才能获得更高的工作效率,工作之余的娱乐对每一个人来说都是必不可少的。
五子棋这种娱乐方式简单易学又具有深奥的技巧,非常富有趣味性和消遣性。
在经过不断发展后,五子棋已经成为棋盘娱乐的一个重要的组成部分,它能够增强思维能力、开发智力,是人们休闲娱乐的不错选择。
近来随着计算机和手机的快速发展,各种各样的游戏层出不穷,使得人们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。
现在的五子棋游戏软件基本上可以分为两类:
一类是网络五子棋游戏软件,另一类是单机版五子棋游戏软件。
很少有手机版的五子棋游戏软件。
为了满足手机人群的需求,本文设计了这款手机版的五子棋游戏软件,可以供人们闲暇时间随时随地地进行娱乐,提高自己的五子棋水平,实用性强。
本课题主要研究在android手机上开发一款集人机对战和人人大战两个游戏模式于一身的五子棋游戏。
游戏界面部分凭借android平台提供的非常完美的控件和精美的布局框架设计出一个内容清楚、指示明白、屏幕美观和有亲切感的游戏界面。
在人机对战中通过极大极小树原理、深度搜索方法、剪枝方法等理论来模拟一个运行效率快,具有一定智能的对手来同游戏玩家一较高下。
人人对战部分主要是提供一个界面美观的平台来供游戏双方更好的切磋棋艺。
此外,本软件还必须具备如下基本功能:
①显示一个十五行十五列的五子棋棋盘。
②在棋盘上面对应位置通过触屏点击下子,棋盘上将在相应的位置上显示棋子,并且棋子在纵横交点上。
③可以自动判断游戏是否结束,判断胜负,是否黑方或者白方已经胜出,并且通过提示信息来提醒玩家。
④在游戏上方会有一个游戏信息,这个游戏信息是用来提示当前游戏状态和当前是黑白双方的哪一方下子,玩家可以根据这个提示来相应的下棋,而不会导致不清楚轮到哪一方下棋的情况出现。
⑤可以重新开始游戏,悔棋,认输和退出游戏界面的功能。
⑥要有帮助界面。
1.五子棋手机游戏概述
1.1五子棋简介
五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。
发展于日本,流行于欧美。
现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(FiveinaRow的缩写),亦有“连五子”“五子连”“串珠”“五目”“五目碰”“五格”等多种称谓。
五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。
它是中西文化的交流点,是古今哲理的结晶。
1.2手机游戏的优点
庞大的潜在用户群现在全球超过十亿部移动电话正在被使用,并且这个数目还在逐渐增加。
在除美国之外的每个发达国家,拥有手机的人数比拥有计算机的人数还要多。
虽然这些手机只有小部分是支持Java游戏的手机,但是这个数目正在快速地提高并且在几年内Java手机将要成为行业标准。
移动游戏潜在的市场比其它任何平台(比如Playstation和GameBoy)都要大。
便携性GameBoy比其他任何控制台游戏卖出的多的一个原因就是其的便携性。
与现在的游戏控制台或个人电脑相比,手机可能不是一个好的游戏设备,但是人们基本上是随时随地都把它们带在身边,在人们离开家或者想玩的时候,可以不受任何时间地点限制地玩自己选择的游戏。
支持网络因为移动电话是网络设备,所以可以实现多人游戏。
1.3五子棋术语
黑方:
执黑棋一方的简称。
白方:
执白棋一方的简称。
胜局:
有一方获胜的对局。
和局:
分不出胜负的对局。
终局:
对局结束。
阳线:
直线,棋盘上可见的横纵直线。
交叉点:
阳线垂直相交的点,简称“点”。
阴线:
斜线,由交叉点构成的与阳线成45°夹角的隐形斜线。
落子:
棋子直接落于棋盘的空白交叉点上。
轮走方:
即“行棋方”,有权利落子的黑方或白方。
连:
同色棋子在一条阳线或阴线上相邻成一排。
长连:
五枚以上同色棋子在一条阳线或阴线上相邻成一排。
五连:
只有五枚同色棋子在一条阳线或阴线上相邻成一排。
成五:
含有五枚同色棋子所形成的连,包括五连和长连。
四:
一条阳线或阴线上连续相邻的5个点上只有四枚同色棋子的棋型。
活四:
有两个点可以成五的四。
冲四:
只有一个点可以成五的四。
死四:
不能成五的四。
三:
一条阳线或阴线上连续相邻的5个点上只有三枚同色棋子的棋型。
活三:
再走一着可以形成活四的三。
连活三:
连的活三(同色棋子在一条阳线或阴线上相邻成一排的活三)。
简称“连三”。
跳活三:
中间隔有一个空点的活三。
简称“跳三”。
眠三:
再走一着可以形成冲四的三。
死三:
不能成五的三。
二:
一条阳线或阴线上连续相邻的5个点上只有两枚同色棋子的棋型。
活二:
再走一着可以形成活三的二。
连活二:
连的活二(同色棋子在一条阳线或阴线上相邻成一排的活二)。
简称“连二”。
跳活二:
中间隔有一个空点的活二。
简称“跳二”。
大跳活二:
中间隔有两个空点的活二。
简称“大跳二”。
眠二:
再走一着可以形成眠三的二。
死二:
不能成五的二。
三三:
一子落下同时形成两个活三。
也称“双三”。
四四:
一子落下同时形成两个冲四。
也称“双四”。
四三:
一子落下同时形成一个冲四和一个活三。
2.开发环境与工具介绍
2.1开发环境运行环境
2.1.1开发环境
Intel(R)Pentium(R)4CPU2.40GHz,1G内存,160G硬盘MicrosoftWindowsXPProfessionalServicePack3JDK1.60Eclipse3.5
2.1.2运行环境
Android手机操作系统2.2版本。
2.2工具介绍
2.2.1Android简介
Android是基于Linux内核的操作系统,Google公司在2007年11月5日是公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(OpenHandsetAlliance)开发。
Android系统具有开放性、应用程序无界限、应用程序是在平等的条件创建的、应用程序可以轻松地嵌入网络和应用程序可以并行运行等特点。
Android的系统架构共分为4层,由高到低分别是应用层、应用框架层、系统运行库层和linux内核层。
从技术角度而言,Android与iphone相似,采用Webkit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查收邮件、搜索网址和观看视频节目等。
2.2.2Java简介
Java是Sun公司在1995年推出的新的编程语言,它是一种简单的、面向对象的、分布式的、解释的、安全的、可移植的、性能优异的多线程语言。
3.需求分析与总体设计
3.1需求分析
手机屏幕尺寸分为物理尺寸和显示分辨率两个概念。
物理尺寸是指屏幕的实际大小。
大的屏幕同时,要配备高的分辨率,也就是在这个尺寸下可以显示多少个像素,显示的像素越多,可以表现的余地自然就越大。
现在手机行业发展迅速,不同大小屏幕的手机迅速发展,鉴于不同手机屏幕尺寸不同,在设计游戏的时候必须满足:
软件的界面简洁明了,操作简单容易。
软件具有的人工智能算法原理要简单并且运行要快速。
游戏是需要快速反应的,手机处理器的频率直接要求需要使用简单实用的智能算法。
在设计本游戏时考虑到用户需要的是一个操作简便界面简单的游戏软件。
同时要提供人人大战和人机对战两个游戏模式。
特别是人机部分,要考虑到此软件是在手机上运行,手机的很多性能都不如电脑,因此在人工智能算法的设计上应该在尽可能的缩短系统搜索时间的同时还要保证要有一定的智能水平,不然对玩家来说没有一定的挑战性,也就缺少了吸引力。
此外,通过软件功能的分析,根据五子棋爱好者的需求,得出还有如下需求信息:
(1)具有重新开始的功能;
(2)具有认输功能;
(3)具有悔棋功能;
(4)具有提示轮到哪一方下棋的功能;
(5)具有退出游戏的功能;
(6)具有判断胜负的功能。
3.2系统设计思想
本次设计主要是设计一个能够在Android手机上运行的五子棋游戏。
根据一般玩手机游戏的流程,玩家一般是先进入一个欢迎界面,进行选择操作后再进入游戏的主界面开始游戏。
本游戏软件也将遵循该流程,玩家打开游戏软件后将先进入欢迎界面,选择游戏模式,然后进入游戏的主界面开始游戏。
进入游戏的主界面后,系统将根据玩家所选的游戏模式给玩家设置对手玩家。
游戏过程中,棋盘上方的提示信息会提示玩家轮到哪一方下子,玩家也可以进行悔棋、认输等操作。
3.3系统总体设计
根据系统设计思想,得出系统总体设计模型为:
欢迎界面
帮助界面
主界面
人机对战
人人对战
系统功能
选择操作
调用
3.4系统功能模块及流程
3.4.1系统主要功能模块
根据需求分析和系统设计思想,可以将此手机五子棋游戏分为以下几个功能模块:
游戏界面初始化模块:
装载界面图片,画出棋盘,清空棋盘,清空游戏双方落子集合等等功能。
主循环控制模块:
负责控制下棋顺序,当轮到某方下子时,负责将程序流程转到相应的模块中,主要担当一个调度者的角色。
玩家落子模块:
即用户在指定落子区域单击后,程序会计算该子的坐标,并且在相应位置画出相应的棋子。
分析盘面得出最佳下子位置模块:
是本次设计的核心部分,即人工智能模块。
电脑落子模块:
在分析出来的最优位置上画出相应的棋子。
胜负判断模块:
根据预先设定的规则,判断游戏胜负。
悔棋功能模块:
通过点击悔棋按钮可以进行悔棋。
要求重新开始功能模块:
通过按下键盘上的向下键即可
3.4.2系统主要流程
欢迎界面帮助界面选择游戏模式游戏界面初始化人机对战游戏模式人人大战主循环控制主循环控制分析盘面得出最佳下子位置玩家落子玩家1玩家2手机落子否判断胜负某方胜利某方胜利否判断胜负重新开始某方退出某方退出结束图2系统主流程图
手机落子
玩家一
玩家二
分析盘面得出最佳下子位置
游戏界面初始化
玩家落子
帮主界面
欢迎界面
主循环控制
判断胜负
判断胜负
游戏模式
主循环控制
重新开始
结束
3.5玩家视图与操作
3.5.1欢迎界面
欢迎界面主要由游戏名称、开始按钮和退出按钮组成。
游戏名称显示在一个TextView中,而游戏模式的选择则通过键盘上的左右键来抉择。
点击帮助按钮则进入帮助界面显示帮助信息。
点击开始按钮时,进入游戏模式选择界面。
点击退出按钮则退出系统。
以下是欢迎界面图:
图1游戏的欢迎界面图
图2显示菜单游戏的欢迎界面图
3.5.2游戏帮助界面
游戏的帮助界面主要包括五子棋简介,五子棋下棋规则和返回欢迎界面的按钮。
以下是帮助界面图:
图3帮助界面示意图
图4显示菜单上网帮助界面示意图
3.5.3游戏主界面
进入游戏主界面以后要选择游戏模式,活着点击菜单显示返回,开始,退出菜单选择相应的菜单项进行操作。
选择模式是根据键盘上的方向键:
按两下右键是人机对战。
按下左键是人人对战。
程序显示如下:
图5显示菜单的主界面界面示意图(根据提示选择模式)
图6进入游戏界面(人机对战)
图7进入游戏界面(人机对战胜利显示)
图8进入游戏界面(人人对战)
图9进入游戏界面(人人对战胜利显示)
图10进入游戏界面(退出程序按下退出菜单)
4.详细设计
4.1欢迎界面设计
本设计遵循的是要设计一个操作简明的手机游戏,所以界面一定要方便简洁。
本界面是有一个欢迎文本信息和菜单组成。
点击退出按钮则会弹出退出提示的对话框。
欢迎界面的类图如下:
4.2帮助界面设计
本界面有一个显示帮助信息的文本框,以及菜单组成。
帮助界面类图如下:
4.3游戏主界面设计
进入游戏主界面以后要选择游戏模式,活着点击菜单显示返回,开始,退出菜单选择相应的菜单项进行操作。
选择模式是根据键盘上的方向键:
按两下右键是人机对战。
按下左键是人人对战。
游戏主界面的类图如下:
4.4人类玩家类和电脑玩家类
5.人机智能算法分析
5.1知识准备
5.1.1极大极小树
目前绝大部分的博弈类游戏中的人工算法都采用这种方法。
假设己方为MAX点,对方则为MIN点。
如果当层的节点为奇数时那么就为MAX层,同样为偶数时就为MIN层。
当在MAX层时,该层的值就应该为下一个MIN层中的最大一个的值。
当在MIN层是,该层的值就应该为它子层MAX的最小的一个。
5.1.2深度优先搜索
在图论中有两个很重要的遍历的方法,一个是深度优先搜索(DFS),另外一个是广度优先搜索(BFS).这两个方法的主要区别在于下一个节点的选择。
DFS首先选择它的连接节点,若它的下个节点已经全部被遍历过或者不存在的话。
则向上返回到上一个节点,在遍其他的未被访问过的点。
很容易想到这要用到堆栈结构,使用一个递归来实现。
而BFS则是逐个的遍历它的联接接点,将已经访问过的点放入队列中。
然后再依次取出继续这个过程。
5.1.3剪枝方法
当预测-的深度达到3的时候,最坏情况下225*225*225=11390625个,这在目前的一些常规平均的机器性能下也需要40多秒的时间,这是不能够容忍的。
那么是否有很好的改进技术,去除那些不必要的节点,并且在剪去了这些点后不影响结果呢?
答案是肯定的,这种方法就是Alpha---Beta剪枝。
5.2
算法思想
5.2.1算法的主要设计思路
本设计所使用的人工智能算法主要分为四步:
第一步:
考虑到系统的运行效率,根据平常下棋的经验,手机下的第一步子不需要经过复杂的分析计算。
如果人类玩家下的第一步子是落在棋盘边界上时,则手机玩家的第一步子将落在棋盘的正中央;否则,手机玩家的第一步子将在紧挨着人类玩家第一步子的左边位置落下。
第二步:
为了缩短系统搜索分析时间,防止手机玩家每下一步棋都要将整个棋盘上所有的空白点都分析一次,本设计将设计一个函数计算搜索范围。
然后根据搜索范围进行第一次搜索分析,排除不在搜索范围之内的空白点、不可能连成五子即不可能胜利的点、以及活1,半活2点。
搜索游戏双方有没有哪方即将胜利,即双方有没有成五或者可不可以制造出活4。
第三步:
对第一次分析的结果进行再次分析。
找出双方可以制造出活4的点的位置,如果没有的话,就分别整理出双方可以制造出活3的点的位置,半活4的点的位置,双活3的点的位置,半活3的点的位置,双活2的点的位置,活2的点的位置。
第四步:
由前两次的搜索分析得出双方都不可能制造活4,所以只能找活3,再没有的话就找半活4,在没有的话就找单活3,双活2等棋型。
5.2.2算法的主要流程
游戏开始手机落第一个子计算搜索范围清空上一轮搜索结果第一次搜索,扫描所有空白点否在不在搜索范围之类,有没有可能连成五子,是否为活1,半活2抛弃该点是否有一方即将胜利是否第二次搜索在即将胜利位置落子,不再往下分析是否有一方可以制造出活4是否整理出可以制造活3,半活4等棋型的位置在制造活4处落子,不再往下分析第三次搜索找出最佳落子位置落子。
5.2.3第一次搜索
具体的计算方法为初始化当前搜索范围为玩家的第一步棋子的边界值加1,然后分别遍历黑白两方已下的棋子,如果该棋子在当前搜索范围内,则当前的搜索范围不做任何改变,如果该棋子不在当前搜索范围之内,则修改当前搜索范围使得该棋子在当前搜索范围之内。
5.2.4第二次搜索
为了缩短系统搜索时间节省系统开销,系统将对黑白双方的第一次搜索结果进行分开分析。
第二次分析,主要是是分析第一次搜索结果,第一次搜索结果会把一步棋在四个方向上形成的结果生成最多四个对象(敌我各四),而第二次搜索把这四个对象组合成一个对象。
5.2.5第三次搜索
当进行到第三次测试的时候,就表明黑白双方都没有成五和双活四,活四等棋型。
那么我们就只有挑最佳的落子位置落子了,首先看黑白双方有没有双活三,没有的话就找半活四,在没有的话就找活三或者双活二或者活二等棋型。
6.软件测试
6.1软件测试方案
由于本次设计的是一个小型的单机游戏,相对来说没有很复杂的思路,庞大的编码量。
单元测试和集成测试在编写代码的时候已经测试过了。
这里将着重讨论一下系统测试。
在实际软件项目开发中,系统测试常常不是非常正式,测试的只要目标不再是找出缺陷,而是确认其功能和性能。
系统测试的目标在于通过与系统的需求规格说明进行比较,检查软件是否存在与系统规格不符合或者与之矛盾之处,以验证软件系统的功能和性能等满足其规格说明所指的要求。
6.2软件功能测试用例
序号
输入及操作说明
期望结果
评价标准
备注
1
点击程序列表打开程序
进入欢迎界面
测试结果与期望直接进
2
进入欢迎界面点击开始进入游戏界面主界面右键两下选择人机对战模式人机模式
进入游戏主界面点击键盘右键两下,进入人机对战模式
测试结果与期望结果接近
3
进入欢迎界面,点击开始进入游戏主界面。
点击键盘左键进入人人对战模式
成功进入人人对战模式
测试结果也是进入人人对战模式
7.结论
五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。
发展于日本,流行于欧美。
容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
由于个人能力有限本软件还有很多不如意的问题,比如说:
(1)、两个人可以通过互联网对战,这个还没与实现。
(2)、游戏,有奖有罚才好玩儿,待实现。
(3)、游戏结果记录到数据库或者是文件,待实现。
(4)、用户管理,待实现。
8.参考文献
[1]熊刚.基于Android的智能手机的设计与实现[D].武汉:
武汉理工大学,2010.
[2]党李成.基于GoogleAndroid智能手机平台的研究与应用[D].安徽:
安徽大学,2011.
[3]天才小德.百度百科五子棋[DB/OL].http:
//html,2011-1-19/2011-3-27.
[4]杨丰盛.Android应用开发揭秘[M].北京:
机械工业出版社,
2010:
P2-109.
[5]马越.Androi