android平台的五子棋人机对弈.docx
《android平台的五子棋人机对弈.docx》由会员分享,可在线阅读,更多相关《android平台的五子棋人机对弈.docx(10页珍藏版)》请在冰豆网上搜索。
android平台的五子棋人机对弈平台的五子棋人机对弈Android平台五子棋游戏的设计与实现【摘要】在如今这个智能手机系统群雄角逐的时候,2007年Google推出了一款名为Android的开源智能手机操作系统,它采用Linux内核,开放手机联盟成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。
这款软件包括了操作系统、用户界面和应用程序,即智能手机工作所需要的全部软件。
Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。
因此,对于软件从业人员来说,Android平台具有无限的吸引力。
本文围绕一个“基于Android平台的五子棋游戏设计与开发”程序的设计和应用系统的开发课题为背景,介绍了在Android平台上以Java为语言编写游戏的过程。
五子棋游戏的开发不仅是一个简单游戏的编写过程,更重要的是在系统分析和设计阶段所做的工作。
本程序主要讲述了程序的概要设计、核心设计阶段,利用SQlite、SharedPreferences等数据存储功能,直到形成一个完善的可行性系统。
【关键字】Android、五子棋、游戏开发、JavaAbstractintheintelligentmobilephonesystemtocompeteagainstthetopwhen,in2007GooglelaunchedaAndroidopensourceintelligencemobilephoneoperatingsystem,itusestheLinuxkernel,openmobilephoneunionmemberscanuseandmodifySDKpackage,systemopensourcesothatithasgoodexpansibility.Thissoftwareincludestheoperatingsystem,theuserinterfaceandtheapplicationofintelligentmobilephonework,whichrequiredallsoftware.Androidisthebiggestcharacteristicofitsopenarchitecture,notonlyhastheverygooddevelopment,debuggingenvironment,butalsosupportsavarietyofextensibleuserexperience,includingarichgraphicalcomponents,multimediasupportandpowerfulbrowser.Therefore,forsoftwareprofessionals,theAndroidplatformhastheinfiniteattraction.ThispaperfocusesonaplatformbasedontheAndroidGobanggamedesignanddevelopmentprogramdesignanddevelopmentofapplicationsystemprojectasbackground,introducedintheAndroidplatformbasedonJavalanguagegameprocess.Gobanggamedevelopmentisnotonlyasimplegameofthepreparationprocess,butmoreimportantlyinthesystemanalysisanddesignphasework.Thisprogramfocusesontheoveralldesignoftheprocedure,asummaryofthedesignphase,usingthedatastoragefunctionofSQlite,SharedPreferencesandsoon,untilthefeasibilityofformingaperfectsystem.Keywords:
Android,Java,Gobang,gamedevelopment1.引言引言随着智能手机的快速普及,智能手机操作系统市场风生水起。
为了让智能手机用户能够随时随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网以及互联网访问Web网站并处理各种各样的业务。
因此,智能手机的应用软件及其需要的服务将有广阔的发展前景。
1.1人机对弈五子棋开发背景人机对弈五子棋开发背景每个手机上都有手机游戏,上下班以及无聊闲暇时游戏是人们娱乐的一种方式。
Android平台下的手机游戏更是受顾客的亲睐,手机游戏不仅玩起来比较方便,还有助于开发我们的思维,使大家在娱乐的同时也增长了见识,拓展了思维。
五子棋对思维及协调能力有益,能使我们注意力集中,耐心也有明显的提升,培养我们的逻辑思维能力,对智力以及记忆力都很有帮助。
1.2相关知识的介绍相关知识的介绍Android是Google于07年发布的基于Linux平台的开源手机操作系统,号称是首个为移动终端打造的真正开放和完整的移动软件。
自从Google发布智能手机Android操作系统平台以来,Android平台一直以惊人速度挺进,并支持Android智能手机迅速进入领先行列。
Android在全球的智能手机市场的份额从10年第五位跃进到11年的第一位。
目前,智能手机市场份额中Android仍然排名第一,占市场份额的46.3%,iOS系统只占30%。
迄今Android是智能机市场上最大的赢家,是销售增长最快、最成功的竞争者。
本游戏采用当前很热的Android系统,以Java语言为基础的2D手机游戏。
用户游戏界面通过手机终端来实现,较强的人际交互。
这样就大大简化了用户的操作,该游戏为免费游戏,用户可以放心使用。
此外,本系统采用了SharedPreferences作为应用程序的数据存储,用来存储简单的配置信息,简单快捷,占用系统资源少。
背景音乐采用媒体播放功能实现,控制也比较方便。
1.2.1开发工具简介开发工具简介该系统的开发环境是MyEclipse8.5、JDK1.6、AndroidSDK,运用了Java语言。
Java是Android的基础开发语言,java是一门各方面性能都很好的编程语言,它的基本特点是简单、面象对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,适合在internet环境上开发应用系统。
java可以制作大部分网络应用程序系统,而且与当今流行的WWW浏览器结合得很好。
Java也是一种与平台无关的语言,因此用Java开发的网络应用系统可以在各种平台上运行,大大增加了开发效率,减少重复劳动。
而且,Java集成的网络功能有利于开发网络应用系统。
JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。
自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。
JDK是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。
JDK是学好Java的第一步。
而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。
从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。
MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。
它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。
在结构上,MyEclipse的特征可以被分为7类:
1JavaEE模型2WEB开发工具3EJB开发工具4应用程序服务器的连接器5JavaEE项目部署服务6数据库服务7MyEclipse整合帮助对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。
MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。
MyEclipse6.0以后版本安装时不需安装Eclipse。
SDK(softwaredevelopmentkit)软件开发工具包。
被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
1.2.2系统运行配置系统运行配置操作系统:
Android2.1以上。
开发包:
JDK1.6、AndroidSDK。
数据存储:
SharedPreferences、SQlite。
2.需求分析需求分析2.1功能需求功能需求1.适合不同阶段的玩家(新手和熟手)。
2.玩家与手机对弈。
3.可以为新手提供游戏解说。
4.可以纪录玩家的最高游戏纪录(以玩家游戏胜利的时间为标准。
)。
2.2性能需求性能需求1硬件环境:
PC2软件环境:
WindowsXP、Android2.1以上3.概要设计概要设计3.1功能设计功能设计五子棋分为五个模块:
开始游戏、游戏设置、最高纪录、游戏说明、退出游戏。
1.开始游戏:
.点击进入游戏。
2.游戏设置:
.音效设置:
开启/关闭音效、背景音乐的开/关。
.难度设置:
简单,中等,较难。
3.最高纪录:
.纪录不同难度获胜的最短时间,可清空。
4.游戏说明:
.五子棋游戏规则的说明及操作说明。
5.退出游戏:
.退出游戏。
3.2系统功能结构及流程图系统功能结构及流程图根据系统功能的要求,可以将系统分解成几个功能模块来分别设计。
系统结构如图3.1所示:
3.1系统结构图3.3数据存储设计数据存储设计SharePreference主要用来保存应用程序的属性设置,在Android平台常用于存储较简单的参数设置。
其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入。
最高纪录则用此存储方式进行存储。
通过getPreferences()方法来获得Preferences对象,通过“SharePreferences.Editoreditor=uiState.edit();”取得编辑对象,然后通过“deitor.putPreferences()方法添加数据,最后用commit()方法保存这些数据,如果不需要与其它模块共享数据,可以使用Activity.getPreferences()方法保持私有。
SQlite是一个开源的关系型数据库,功能非常强大,可以存储大量的数据,能够很容易地对数据进行使用、更新、维护等操作。
根据系统所做的需求分析和系统设计,SharedPreferences为本系统最有效的存储方式。
4.棋盘、棋子的绘制棋盘、棋子的绘制本设计中棋盘的设置采用drawLine(floatstartX,floatstartY,floatstopX,floatstopY,Paintpaint)/画线,参数一起始点的x轴位置,参数二起始点的y轴位置,参数三终点的x轴水平位置,参数四y轴垂直位置,最后一个参数为Paint画刷对象。
本设计中棋子是用drawCircle在坐标上绘制一个经典几何图形。
先判断是否有棋,是黑子还是白子,然后判断是哪个坐标,然后调用drawCircle绘制棋子canvas.drawCircle(float,float,float,Paint)方法用于画圆,前两个参数代表圆心坐标,第三个参数为圆半径,第四个参数是画笔;5.游戏核心设计游戏核心设计5.1游戏的游戏的三种不同难度等级的设计与输赢判断三种不同难度等级的设计与输赢判断手机与玩家的胜负判断:
每走一步,调用判断方法。
其思想为:
是根据当前最后一个落子的情况来判断胜负的。
实际上需要从四个位置判断,以该子为出发点的水平,竖直和两条分别为45度角和135度角的线,目的是看在这四个方向是否最后落子的一方构成连续五个的棋子,如果是的话,就表示该盘棋局已经分出胜负。
本游戏中最重要的是难度设计,游戏流程如图5.1所示。
5.1游戏流程图三大难度的算法设计,算法的主体思想分三个步骤:
第一步:
根据双方的当前的形势循环地假设性的分别给自己和对方下一子(在某个范围内下子),并判断此棋子能带来的形势上的变化。
第二步:
根据上一步结果,组合每一步棋子所带来的所有结果(包括电脑和玩家的)。
第三步:
根据用户给的游戏难度对上一步结果进行排序,并选子(有进攻形、防守形规则)。
名词解析:
活四棋:
在(横、竖或斜角)方向有同色四子不间隔连成一线,两端都可落子活三棋:
在(横、竖或斜角)方向有同色三子不间隔连成一线,两端都可落子单活棋:
即在某方向上连成一线的棋只有一端可落子四冲棋:
除活四外的,再下一着棋便可形成五连,并且存在五连的可能性的局面搜索方法举例(活三棋):
5.2活三棋的示例图棋盘上的坐标都为大于等于0,想要判断活三棋,先判断在哪个方向上有同色的连棋:
1)如图黑子此种情况下在与Y/X轴成45。
角的方向上有同色连棋,接下来判断三棋子的坐标是否依次相邻递增1,如果是,再判断,最小坐标(非原点)减1和最大坐标(非棋盘最大坐标)加1的两坐标点上是否为空,为空则是活三,否则,不是2)如图白子与X/Y轴成135。
角的方向上有同色连棋,接下来判断三棋子的X坐标是否依次相邻递增1,Y坐标是否依次递减1,如果是,再判断,最小坐标(非原点)X坐标减1,Y坐标加1后和最大坐标(非棋盘最大坐标)X坐标加1,Y坐标减1后的两坐标点上是否为空,为空则是活三,否则,不是3)如果平行于X/Y轴,则只需根据X/Y坐标来判断即可。
注:
最小坐标、最大坐标根据各点的X坐标判断。
简单:
简单难度的实现,只有当电脑为活四棋的时候才进攻,其他情况离玩家最近下棋棋子最近的8个位置上的空位上随机下棋。
中等:
中等难度的实现,电脑只防守,少攻击。
当玩家有“三活棋”以及“四冲”时,防守;否则选择自己最长连棋并且可下棋的空位下棋。
流程图如图5.3所示:
5.3中等难度流程图较难:
较难难度的实现,机有强烈的防守,有猛烈的攻击。
双方都不可以制造活4棋,找活3棋子,不行就找半活4(四冲),再不行就找单活3,活2的攻守模式。
流程图如图5.4所示:
5.4较难难度流程图结束语经过这一段时间的不断探索,自己对Android的研究,对Android游戏有了进一步的了解和学习。
这段时间的不懈努力,五子棋游戏系统设计已初步完成。
系统设计为整个游戏构建了框架,各个功能模块实现各个细节部分。
难,中,易三种游戏难度的选择。
系统的详细设计将根据系统分析阶段的结论具体化,并完成各个模块的相关功能,从而实现Android五子棋。
随着3G智能机的普及,人们对游戏的要求也越来越高,人机对战的实现往往是不够的。
现在网络越来越好,网络双人对战也是一个很不错的研究方向。
参考文献吴亚峰,索光亚.Android2.0游戏开发实战宝典M.北京:
人民邮电出版社杨丰盛.Android应用开发揭秘M.北京:
机械工业出版社高焕堂.Android应用框架原理与程式设计36技M/OL裴佳迪,马超,孙仁贵.Android开发全程实录M.人民邮电出版社马越.Android的架构与应用D.北京:
中国地质大学(北京)硕士学位论文.