




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 训 报 告实训项目名称基于Android象棋游戏的开发与测试二 级 学 院 信息工程学院 专 业 班 级 11级计科(2)班 姓 名 完圆圆、李城城、孙超、胡迪 学 号 1142151221、14、20、08 日 期 2014-11-19 项目名称基于安卓象棋游戏的开发与测试地点教13 603报 告 内 容在本报告中,首先介绍了安卓的现状以及开发的相关知识,其次是关于开发游戏过程中用到的开发工具和系统的运行环境配置等。通过对Android系统架构和应用开发进行初步研究,设计一款中国象棋游戏。在对系统进行详细需求分析的基础上,确定了系统的功能和性能要求,对游戏的菜单界面、屏幕绘制、时间控制、布局算法和动画等进行了设计,并最终实现了一个界面友好、高效稳定和富有娱乐性的手机益智游戏。最后,实现的是对本次游戏的测试并列举了测试用列以及给出了测试结果。教师评语成绩: 教师签名: 摘 要 中国象棋是一款智力休闲游戏,具有历史悠久而且拥有巨大的游戏爱好者群体,他们以中国象棋陶冶情操、锻炼智力、体验象棋带来的快乐,中国象棋还是一个老少皆宜的娱乐游戏。随着手持设备、智能手机的普及,搭载Android操作系统的智能手机也已经走进了千家万户,当人们闲暇偶尔需要娱乐时,却发现没有实物象棋,该软件不失为一个很好的替代品,供大家进行娱乐享受,尤其是在现在这个快节奏的社会中 ,人们更满足于手机的使用,可以方便地随意移动,不像实物象棋那样静静的坐着。矚慫润厲钐瘗睞枥庑赖。 本论文通过实际应用软件的开发深入分析和研究Android开发技术。实现中国象棋的人机会话。本文实现了中国象棋在计算机中表示问题,基于Android平台应用,人机对战模拟现实中的人人对战;讨论走棋规则和着法的实现等一系列问题,最终电脑能够通过产生着法,搜索,估计来产生一步最优的走棋,实现人机会话的目的。聞創沟燴鐺險爱氇谴净。关键字:中国象棋,Android,智能手机,人机对战目录1 绪论1残骛楼諍锩瀨濟溆塹籟。1.1 研究背景1酽锕极額閉镇桧猪訣锥。1.2 本论文研究意义3彈贸摄尔霁毙攬砖卤庑。2 游戏系统开发平台及搭建4謀荞抟箧飆鐸怼类蒋薔。2.1 JDK和 Eclipse:4厦礴恳蹒骈時盡继價骚。2.2 Android SDK4茕桢广鳓鯡选块网羈泪。2.3 ADT5鹅娅尽損鹌惨歷茏鴛賴。3 系统分析6籟丛妈羥为贍偾蛏练淨。3.1 可行性研究6預頌圣鉉儐歲龈讶骅籴。3.2 界面的需求分析6渗釤呛俨匀谔鱉调硯錦。3.3 游戏走棋需求设计分析6铙誅卧泻噦圣骋贶頂廡。4 游戏系统的设计与实现7擁締凤袜备訊顎轮烂蔷。4.1 类框架的设计7贓熱俣阃歲匱阊邺镓騷。4.2 共有类ChessActivity的实现8坛摶乡囂忏蒌鍥铃氈淚。4.3 辅助界面相关类的实现8蜡變黲癟報伥铉锚鈰赘。4.4 游戏界面相关类的实现9買鲷鴯譖昙膚遙闫撷凄。4.5 中国象棋的规则及走法的实现10綾镝鯛駕櫬鹕踪韦辚糴。4.6 游戏人机对战的实现18驅踬髏彦浃绥譎饴憂锦。4.7 系统流程图19猫虿驢绘燈鮒诛髅貺庑。5 运行测试20锹籁饗迳琐筆襖鸥娅薔。5.1 测试用例表20構氽頑黉碩饨荠龈话骛。5.2 测试结果20輒峄陽檉簖疖網儂號泶。6 小结23尧侧閆繭絳闕绚勵蜆贅。参考文献24识饒鎂錕缢灩筧嚌俨淒。附录:25凍鈹鋨劳臘锴痫婦胫籴。1 绪论1.1 研究背景(1) 中国象棋背景中国象棋发展至今已有两千三、四百年的历史,早在战国时期就有正式的记载,堪称中国的国粹。中国象棋具有悠久的历史,深的人们的喜爱,象棋的爱好者也更是数不胜数,远在战国中国象棋便在贵族阶层广为流传,早期的象棋是象征着当时战斗场面的游戏,后来这种观念慢慢被改变,经过千年的流传不断的完善和改进,成为人们休闲娱乐、锻炼脑力思维不可获取的好方式。恥諤銪灭萦欢煬鞏鹜錦。中国象棋体现的是一种策略,方寸之间包含天地玄机,人生哲理,使人越是细玩越觉其味悠然深远。由于简单的行棋规则,趣味性强,便捷的载体,使得象棋成为雅俗共赏的竞技项目。因此,也成为流行极为广泛的棋艺活动。是我国正式开展的78个体育项目之一,为促进该项目在世界范围内的普及和推广,在中国古代,象棋被列为士大夫们的修身之艺,现在则被视为怡神益智的一种有益的活动。有着数以亿计的爱好者。它不仅能丰富文化生活,陶冶情操,在棋战中,人们可以从攻与防、虚与实、整体与局部等复杂关系的变化中悟出某种哲理;更有助于开发智力,启迪思维,锻炼辨证分析能力和培养顽强的意志。鯊腎鑰诎褳鉀沩懼統庫。(2) Android系统简介Android 系统构架简介:Android是一个基于LinuxV2.6内核的交互性操作环境,同时它也是一个分层系统,Android系统架构显示如下图1.1。硕癘鄴颃诌攆檸攜驤蔹。图1.1系统架构图 应用层由所有的Android应用程序组成。其中包括电子邮件客户端,SMS程序,地图,浏览器,联系人及其他。所有的应用程序都是用Java编程语言编写的。阌擻輳嬪諫迁择楨秘騖。 应用框架层定义了Android应用程序框架。所有的Android应用程序都是基于应用框架的。Android应用框架包括:氬嚕躑竄贸恳彈瀘颔澩。l 丰富及可扩展性的视图,可以用来建立一个美观的用户界面,包括列表,网格,文本框,按钮,甚至是嵌入到Web浏览器的应用程序。 釷鹆資贏車贖孙滅獅赘。l 一组内容提供商,使应用程序能够访问其他应用程序的数据(如电话簿),或共享自己的数据。l 资源管理器提供了访问的非编码资源的途径,如本地化的字符串,图形,布局文件。l 通知管理器允许所有应用程序显示定制的提示或通知在状态栏里。l 活动管理器可以管理应用程序的生命周期,并提供一个通用的后台堆栈导航。 库层包括了一套被各类Android 系统组件使用的C / C + +库并对应用程序框架提供支持。 Android 的运行环境包括一套核心库和 Java 虚拟机(Dalvik虚拟机),已经由谷歌重新设计和优化来适合Android平台。怂阐譜鯪迳導嘯畫長凉。 Linux 内核位于 Android 系统的底层并作为硬件和软件之间的一个抽象层。它提供了核心系统服务,如安全,内存管理,进程管理,网络协议栈和驱动模型。此外,一些底层功能如 Dalvik 虚拟机线程管理也依赖于Linux内核。谚辞調担鈧谄动禪泻類。1.2 本论文研究意义 中国象棋是一项智力和策略的游戏,以往都是人和人下棋,现在有了计算机我们可以和计算机竞技,人可以与计算机进行对弈。控制计算机的是人类,而人机会话综合性很强的一门边缘学科,它的中心任务是研究使计算机如何去做那些过去只能靠人的智力才能做的工作。因此,对游戏开发过程中的人工智能技术的研究自然也就成了业界的一个热门研究方向。嘰觐詿缧铴嗫偽純铪锩。 本次论文的研究,主要是对中国象棋在Android系统中的兼容行性,对游戏界面可观性,游戏中人机会话的研究。对于游戏中的人机会话的要点:熒绐譏钲鏌觶鷹緇機库。a 某种在及其上表示棋局的方法,让程序知道会话的状态;b 产生合法的走棋法则,使得会话双方公正,并可以判断人类对手是否乱走;c 从所有和法定的走法中选择最佳的走法的技术;d 一种评估局面优化的方法,同上面技术配合做出智能选择;e 一个实现游戏的界面;通过对游戏的设计,来实现游戏中棋牌的表示,着法的生成,对着法的搜索,最后对局面的评估来实现中国象棋的人机会话。鶼渍螻偉阅劍鲰腎邏蘞。2 游戏系统开发平台及搭建2.1 JDK和 Eclipse:JDK是Sun公司针对java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的java SDK。JDK是整个java的核心。包括运行环境Java工具和Java基础类库。JDK是学好Java的第一步。纣忧蔣氳頑莶驅藥悯骛。安装Eclipse的开发环境需要JDK的支持,如果没有JDK,则启动Eclipse时会报告错误。在windows上安装JDK非常简单首先在Sun官网上下载,按照默认路径进行安装。安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java version 查看JDK的版本信息。出现类似下面的画面表示安装成功了:颖刍莖蛺饽亿顿裊赔泷。图 2.1 JDK测试Eclipse如果你还没有Eclipse的话,从官网上下载Eclipse IDE for Java Developers解压之后即可使用。濫驂膽閉驟羥闈詔寢賻。2.2 Android SDKAndroidSDK 提供了在 windows 平台上的开发安卓应用程序的开发组件,也就是说,不论读者使用什么样的平台都可以开发出安卓平台的应用软件,其中包含了安卓平台上开发移动应用的各种工具集。它不仅包括了安卓模拟器和用于Eclipse的安卓开发工具插件(ADT),而且包括了各种用来调试,打包盒在模拟器上安装应用的工具。銚銻縵哜鳗鸿锓謎諏涼。安卓主要是以 java 语言为基础,用户可以使用 java 语言来开发 安卓平台上的软件应用。通过SDK提供的一些工具将其打包成安卓平台使用的apk文件,然后在使用SDK中的模拟器(Emulator)来模拟和测试软件在安卓平台运行情况和效果。挤貼綬电麥结鈺贖哓类。安装安卓的SDK,安装好JDK和Eclipse后,打开Eclipse IDE。依次单击Menu项中的windows-Android SDK Manager项,进入Android SDK Manager界面选择Tool和需要的Android版本项进行更新安装。赔荊紳谘侖驟辽輩袜錈。2.3 ADTAndroid为Eclipse定制了一个插件,及ADT(Android Development Tools),目的是为用户提供一个强大的综合环境用于开发Android应用程序,ADT扩展了Eclipse的功能,可以让用户快速的建立Android项目,创建应用程序界面,在基于Android API的基础上添加组件,以及用SDK工具集调试应用程序,甚至导出签名(或未签名)的APKs以便发行应用程序。塤礙籟馐决穩賽釙冊庫。安装Android Development Tool plug-in,打开 Eclipse IDE。依次单击Menu项中的Help-Software Update项裊樣祕廬廂颤谚鍘羋蔺。3 系统分析3.1 可行性研究本次实训的题目是:基于Android象棋游戏的开发与测试;主要是在基于Android平台开发一个手持设备应用游戏,使得游戏具有兼容性和人机对战;并对整个系统分析,设计过程给出一个论证。仓嫗盤紲嘱珑詁鍬齊驁。中国象棋游戏是棋牌类游戏,体现的是一种策略。对于行棋走棋不同的棋子有不同走棋规则,走棋都必须按照走棋规则要求,双方轮换走棋,吃子,将军。本游戏设计无疑是模拟现实人人博弈,虚拟的替换了真实的棋子棋盘,由人来和电脑直接对弈;在一个人闲暇时也可以体验博弈的乐趣。绽萬璉轆娛閬蛏鬮绾瀧。该应用游戏的设计主要从以下几方面做起:系统流程分析、系统的功能设计、系统的数据结构设计。做好这些工作需要对Android开发平台了解,并搭建平台;深入了解数据结构、Android应用程序以及各种组件(API)库函数。骁顾燁鶚巯瀆蕪領鲡赙。3.2 界面的需求分析 通过以往手持设备游戏的体验,和用户对中国象棋游戏需求逻辑,游戏的功能以及操作方法把整个设计划分成单元;先是运行游戏,进入欢迎游戏界面,随后单击欢迎界面的图片进入菜单界面,在菜单中可以点击“打开声音”/“关闭声音”按钮来控制声音开关,单击“帮助”菜单可以进入帮助界面显示游戏操作方法,而在菜单界面单击“开始游戏”菜单将进入游戏主界面开始游戏,在游戏界面玩家可以通过单击自己的棋子按照行棋规则来走棋,同时可以单击声音按钮打开关闭声音,当游戏一方的“将”或者敌方的“帅”被吃掉是,会出现游戏失败或游戏胜利的界面,在游戏过程中玩家可以随时通过单击“退出”按钮返回到游戏主菜单,主菜单中还可以点击“退出游戏”结束关闭游戏。瑣钋濺暧惲锟缟馭篩凉。3.3 游戏走棋需求设计分析进入游戏界面,游戏提示当前走棋为“帅”或者“将”,双方各走一着,直至分出胜负或者直接点击退出结束游戏,轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走一着,双方各走一着即一个回合,吃子时,任何棋子走动,如果目标位置上有对方的棋子,就可以把对方的棋子拿出棋盘,即屏幕上消失在显示自己的棋子。鎦诗涇艳损楼紲鯗餳類。玩家走完棋后电脑相对应搜索出自己相对应的走法。程序需要让计算机在轮到它走子的时候能够执行一步它认为最有利的着法,而不是乱走;那么它就要有在诸多可供选择的着法,提供所有候选着法的列表就是着法生成器所要完成的。之后用搜索函数来搜索列表,并用局面评估函数逐一打分,最后就可以选择出最佳着法并执行。栉缏歐锄棗鈕种鵑瑶锬。4 游戏系统的设计与实现4.1 类框架的设计通过对中国象棋游戏的了解,对基于Android技术的中国象棋人机对弈游戏的需求分析,游戏实现的理解并结合自己对知识点所掌握的程度;对中国象棋游戏总体设计,主要由三个类组成:共有类,辅助界面相关类,游戏界面相关类。辔烨棟剛殓攬瑤丽阄应。共有类是Activity的实现类ChessActivity,该类是通过扩展基类Activity得到的,是整个游戏的控制器,也是整个游戏程序的入口;辅助界面相关类由WelcomeView欢迎界面类(该类为游戏欢迎界面的实现类,主要负责欢迎界面的绘制工作),HelpView帮助界面类(该类为帮助界面的实现类),MenuView菜单界面类(该类为菜单界面的实现类,负责绘制菜单界面以及对菜单界面的屏幕进行监听)三个类实现;游戏界面相关类由GameView游戏界面类(该类为游戏程序中最主要的类,负责绘制游戏过程中所有的信息,如棋盘、棋子、各个按钮以及胜利或失败菜单等),GuiZe象棋规则类(该类是象棋规则的实现类,其中包含所有棋子的走棋规则以及当前棋牌所有可能走法),ChessMove走法类(该类为棋子的走法的封装类,包括棋子的名称,出发点以及目标点)。之间关系如图4.1所示:峴扬斕滾澗辐滠兴渙藺。图4.1游戏类图4.2 共有类ChessActivity的实现该类的主要作用是通过接受Handler消息变量,根据各个界面发送的Handler消息的类型判断所需要执行的操作。在适当的时间初始化相应的用户界面,各个界面初始化方法被调用时,并根据其他界面的需求直接将用户界面切换到相应的界面詩叁撻訥烬忧毀厉鋨骜。4.3 辅助界面相关类的实现该游戏的第一个用户界面即欢迎界面如图4.2所示,通过WelcomeView类来实现该界面加载了一个欢迎中国象棋图片,并通过监听菜单图片,向Activity发送Handler消息通知控制器切换用户界面;然后切换到菜单界面MenuView。则鯤愜韋瘓賈晖园栋泷。图 4.2 游戏欢迎界面 MenuView类中通过监听“开始游戏”切换到游戏界面;通过监听“打开声音”/“关闭声音”进行声音的打开与关闭,与此同时“打开声音”、“关闭声音”按钮进行切换;通过监听“帮助”来切换都帮助界面;通过监听“退出游戏”结束游戏用行退出游戏。胀鏝彈奥秘孫戶孪钇賻。帮助界面HelpView,该类中加载图片,图片中显示该游戏“怎么玩”同时监听“返回”按钮,向Activity发送Handler消息通知控制器切换用户界面从而返回到菜单界面,如图4.3所示。鳃躋峽祷紉诵帮废掃減。图 4.3 菜单界面4.4 游戏界面相关类的实现游戏界面GameView,该类是整个程序中最主要的类,该类首先是绘制屏幕上的内容棋盘和对应的棋子。提示一方先走;当“黑帅”或者“红将”被吃的话,弹出您赢了或者您输了通过监听结束游戏切换到菜单界面。或者点击退出按钮也可结束游戏切换至菜单界面。监听声音按钮来控制声音的开与关并以红色显示声音开,消失即为关,如图4.4所示。稟虛嬪赈维哜妝扩踴粜。图4.4游戏界面4.5 中国象棋的规则及走法的实现(1) 行棋规则中国象棋分为红黑双方,以楚河汉界为分界线,双方各执16字,分别为2车2马2相2仕2炮1将5卒,各自走法不同,具体如下:陽簍埡鲑罷規呜旧岿錟。马:只可以走“日”字方格,因此一匹马的最理想落子点有8个,但存在绊马腿的情况,即从马的位置到要走到的目标位置,顺着此方向,“日”字方格有两个方向,即两格长度和一个长度,马紧挨的两格长度方向的位置不能有子,否则即被绊住,不能走动。若目标位置为空,即可走过,若为对方的棋子,即可吃掉。沩氣嘮戇苌鑿鑿槠谔應。图4.5马的走法红黑马规则走法的介绍:case 10:/红马 case 3:/黑马if(!(Math.abs(toX-fromX)=1 & Math.abs(toY-fromY)=2)钡嵐縣緱虜荣产涛團蔺。| (Math.abs(toX-fromX)=2 & Math.abs(toY-fromY)=1)懨俠劑鈍触乐鹇烬觶騮。return false;/马走的不是日字时if(toX-fromX=2)/向右走i=fromX+1;/移动j=fromY;else if(fromX-toX=2)/向左走i=fromX-1;/移动j=fromY;else if(toY-fromY=2)/向下走i=fromX;/移动j=fromY+1;else if(fromY-toY=2)/向上走i=fromX;/移动j=fromY-1;if(qiziji != 0)return false;/绊马腿break;炮:只可以走直线,且一步可以走任意距离,其起始点与目标点之间不得存在其他棋子。炮吃子的条件是与目标棋子在一条直线上,且两子之间必须有且只有一个棋子作为“跳板”,让炮进行跳跃式攻击。謾饱兗争詣繚鮐癞别瀘。红黑炮规则走法的介绍:图4.6炮的走法case 11:/红砲case 4:/黑炮if(fromY!=toY & fromX!=toX)/炮走直线return false;/返回falseif(qizitoYtoX = 0)/不吃子时if(fromY = toY)/横线if(fromX toX)/想右走for(i = fromX + 1; i toX; i+)if(qizifromYi != 0)return false;/返回falseelse/向走走for(i = toX + 1; i fromX; i+)if(qizifromYi!=0)return false;/返回falseelse/竖线if(fromY toY)/向下走for(j = fromY + 1; j toY; j+)if(qizijfromX != 0)return false;/返回falseelse/向上走for(j = toY + 1; j fromY; j+)if(qizijfromX != 0)return false;/返回falseelse/吃子时int count=0;if(fromY = toY)/走的是横线if(fromX toX)/向右走for(i=fromX+1;itoX;i+)if(qizifromYi!=0)count+;if(count != 1)return false;/返回falseelse/向左走for(i=toX+1;ifromX;i+)if(qizifromYi != 0)count+;if(count!=1)return false;/返回falseelse/走的是竖线if(fromYtoY)/向下走for(j=fromY+1;jtoY;j+)if(qizijfromX!=0)count+;/返回falseif(count!=1)return false;/返回falseelse/向上走for(j=toY+1;j4)/不能过河return false;if(Math.abs(fromX-toX) != 2 | Math.abs(fromY-toY) != 2)/相走“田”字莹谐龌蕲賞组靄绉嚴减。return false;if(qizi(fromY+toY)/2(fromX+toX)/2 != 0)return false;/相眼处有棋子break;case 13:/红相if(toY2|toX5)/出了九宫格return false;if(Math.abs(fromY-toY)+Math.abs(toX-fromX)1)/只能走一步風撵鲔貓铁频钙蓟纠庙。return false;break;case 8:/红将if(toY5|toX1)/只能走一步灭嗳骇諗鋅猎輛觏馊藹。return false;break;(2) 棋盘的表示针对棋盘的设计,每一种棋子对应一个固定的值用以识别该棋子的类型,那么设计就根据红黑双方的棋子以及每个类型的棋子,设计规则类(GuiZe类,调用其中的canMove方法用以判断某一步走棋的是否可行。规则类的设计则采用了常规的办法,因为棋子的种类只有7种,且红黑双方处于棋盘的两端,某些棋子走动时的方向不一样,设计时就要进行分类讨论设计,供存在14中不同的判别方法来对所以的棋子走法进行判别是否可行,每一个判别方法都对应于其独有的判断算法。铹鸝饷飾镡閌赀诨癱骝。棋盘上各种棋子以及棋盘的初始布局的设计采用10*9的数组来进行标识,如下图4.9所示 : 图 4.9棋盘初始布局各个数字的对应关系如下:0-无棋子;1-黑方的帅;2-黑方的车;3-黑方的马;4-黑方的炮;5-黑方的士;6-黑方的象;7-黑方的卒;8-红方的将;9-红方的车;10-红方的马;11-红方的炮;12-红方的士;13-红方的相;14-红方的兵。攙閿频嵘陣澇諗谴隴泸。坐标(0,0)到坐标(8,4)之间的坐标代表楚河汉界的一方,坐标(0,5)到坐标(8,9)之间的坐标代表楚河汉界的另一方,即红黑双方各自的领土。趕輾雏纨颗锊讨跃满賺。电脑走棋时通过构造一个走法类ChessMove,创建一个对象调用NegamaxEngine类中的Search()函数根据当前局势查询一个最好的走法记录棋子的原有位置坐标、目标位置坐标、棋子类型并对该对象进行初始化。然后根据该对象记录的原有位置坐标和目标位置坐标进行数据改变达到行棋目的。夹覡闾辁駁档驀迁锬減。玩家走棋是通过对屏幕进行监听,从而记录棋子类型,原有位置坐标和目标位置坐标,通过调用规则类GuiZe中的CanMove判断该棋子走法是否可行符合棋子走棋规则,可行就改变原有位置和目标位置数据,达到行棋的目的视絀镘鸸鲚鐘脑钧欖粝。轮到走棋的一方,游戏界面当前位置显示走棋一方的“黑帅”或者“红将”,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,这样一方走棋结束当前位置显示改变轮到另一方走棋。偽澀锟攢鴛擋緬铹鈞錠。任何棋子走动,如果目标位置上有对方的棋子,就可以把对方的棋子拿出棋盘,即在10*9数组中相应位置的数字变为自己棋子所对应的数字,自己棋子原来所在的位置对应数组的数字变为0,刷帧线程不断的刷新界面改变屏幕显示,这样对方的棋子就被吃掉,在屏幕上消失在对应显示自己的棋子;如果目标位置上没有对方棋子,10*9数组对应目标位置数字改变,原有位置数字变为0,刷帧线程更新界面改变显示。緦徑铫膾龋轿级镗挢廟。4.6 游戏人机对战的实现(1) 首先产生所有可能的走法,定义一个ArrayList容器,把可能的走法放入ArrayList容器里面。public List allPossibleMoves(int qizi)/产生所有可能的走法騅憑钶銘侥张礫阵轸蔼。 List ret = new ArrayList();/用来装所有可能的走法 疠骐錾农剎貯狱颢幗騮。 for (int x = 0; x 10; x+) for (int y = 0; y 7)/是红方,即是玩家棋子时跳过 continue; . return ret.isEmpty() ? null : ret;/当ret中没有走法时,返回空,有时返回ret镞锊过润启婭澗骆讕瀘。(2) 利用随机数从容器中取出一种走法,完成移动。public ChessMove searchAGoodMove(int qizi)/查询一个好的走法榿贰轲誊壟该槛鲻垲赛。List ret = allPossibleMoves(qizi);/产生所有走法邁茑赚陉宾呗擷鹪讼凑。try Thread.sleep(1000);/睡眠四秒钟,以便调试 catch (InterruptedException e) /捕获异常e.printStackTrace();/打印堆栈信息return ret.get(int)(Math.random()*ret.size();4.7 系统流程图游戏流程图如图4.10所示图4.10系统流程图5 运行测试5.1 测试用例表测试编号测试目标期望结果实际结果001测试象棋“马”是否“绊马腿”游戏过程中,“马”在绊马腿情况下不能移动。能实现“绊马腿”002测试一方棋子能否被另一方吃掉,并消失棋子被吃后消失,吃子的棋子能代替被吃棋子的位置一方棋子能被另一方吃掉,并消失003测试对手的象棋“将”能否被将死,能结束游戏对手的象棋“将”被将死,并出现提示“你赢了” ,结束游戏对手的象棋“将”被将死,能结束游戏004测试象棋“炮”是否能隔子吃掉对手的棋子,即“炮打隔子”“炮”隔子吃掉对手棋子“炮”能“炮打隔子”005测试游戏棋子是否能移动棋子从一个到另一个位置游戏棋子能移动006不同分辨率模拟器能否正常运行能够正常运行不能正常运行007能否对将可以对将不能对将5.2 测试结果(1) 测试001“马”是否“绊马腿”测试结果如图5.1所示图5.1测试绊马腿(2) 测试002一方棋子能否被另一方吃掉测试结果如图5.2所示图5.2测试吃子(3) 测试003“将”能否被将死测试结果如图5.3所示图5.3测试能否赢棋(4) 测试003“将”能否被将死测试结果如图5.4所示图5.4测试对将(5) 测试006不同分辨率模拟器能否正常运行如图5.5所示图5.5测试不同分辨率模拟器6 小结三周的Android实训,已接近尾声。在这短暂的三周之内,有成功有失败;有喜悦有心酸。在实训老师的带领下,我学到了很多。我们小组在老师的协助下最终成功的完成实训项目。在这次实训中让我学到了,对于每一个项目开发,都需端正态度,量力而行,发挥自己的长处,这样不仅有利于促进团队项目开发的进度,还有利于把自己代入这个项目中。当自己融于这个项目时,就能多思考。这样是一个自我学习的过程,这里本来不会做,但是经过这个项目或这个模块后,这里也就会了,把不会的变成会的,把别人的知识变成自己的,这才是会学习。嵝硖贪塒廩袞悯倉華糲。通过为期三周的Android实训,这次的实训让我学到了很多知识。在项目中,除了让我明白工作中需要能力,素质,更重要的是学会如何去完成一个任务,懂得了享受工作。当遇到问题时要冷静去想办法一点一点的排除障碍,到最后取得成功,一种自信油然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人身上能够学到自己没有的知识,每一次的挫折只能使我们更接近成功。在这次项目中让我体会到了团队合作的重要性,团队合作注重沟通和信任,不能不屑于做一些小事,永远要保持亲和诚信,把专业理论运用到具体实践中,不仅加深我对理论的掌握和运用,这是实训中最大的收获。该栎谖碼戆沖巋鳧薩锭。刚开始接触Android感觉到他很有意思,在界面开发和web也可以形成想通的架构,更加方便,视觉上也非常的酷,前期我通过大量的Android SDK开发范例和Android提供的API文档中学习,通过这些例子的学习我从中发现了很多和以前Java相同的思想。在这为期三周的实训中让我学到了很多课堂上学不到的知识,让我基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握使用,对其事件的监听也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。劇妆诨貰攖苹埘呂仑庙。通过这次的实训,让我学到了很多,因为我们都是第一次接触Android,所以老师先给我们讲的每一个程序我们都去认真编写,通过这些小程序,让我们知道了如何去创建一个Android项目,了解了Android项目里的每一个文件夹和文件的作用。在这次项目中让我体会到了团队合作的重要性,团队合作注重沟通和信任。同时还让我知道做任何事都需端正态度,量力而行,发挥自己的长处,这样不仅有利于促进团队项目开发的进度,还能让我们知道我们自己的位置。总之在这次的实训中让我学到了知识,同时也让我学到了经验,这让我在以后的工作中有重大帮助。臠龍讹驄桠业變墊罗蘄。参考文献1 刘敏.移动终端的Android移植与应用程序设计D. 西安电子科技大学 2011 鰻順褛悦漚縫冁屜鸭骞。2 王蕾.哈尔滨招行Android手机银行汇率换算模块的设计与实现D. 吉林大学 2011 穑釓虚绺滟鳗絲懷紓泺。3 施金兰.基于Android平台的网络共享研究与实现D. 华东师范大学 2011 隶誆荧鉴獫纲鴣攣駘賽。4 赵建勋.基于Android平台的移动位置服务的开发与实现J. 现代商贸工业. 2010(20) 浹繢腻叢着駕骠構砀湊。5 李林涛,朱珊虹.基于Android系统的手机游戏黑白棋的设计与实现J. 新乡学院学报(自然科学版). 2011(03) 鈀燭罚櫝箋礱颼畢韫粝。6 丛秋波.用于Android手机操作系统的视频引擎J. 电子设计技术. 2010(07) 惬執缉蘿绅颀阳灣熗鍵。7 郭国勇.Android启动过程优化研究D. 兰州大学 2012 贞廈给鏌綞牵鎮獵鎦龐。8 摆云.基于Android开放平台和无线通信网络的实时音视频传输系统设计与实现D. 兰州大学 2012 嚌鲭级厨胀鑲铟礦毁蕲。9 刘牛.基于Android平台的数字电视机顶盒模拟器的研究与开发D. 兰州大学 2012 薊镔竖牍熒浹醬籬铃騫。10 王康.Android RIL研究及其在无线通讯模块上的实现D. 太原科技大学 2012 齡践砚语蜗铸转絹攤濼。附录:ChessActivity.javapackage com.example.chessgame;import android.app.Activity;/引入相关的包import android.media.MediaPlayer;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Window;import android.view.WindowManager;public class ChessActivity extends Activity boolean isSound = true;/是否播放声音MediaPlayer startSound;/开始和菜单时的音乐MediaPlayer gamemusic;/游戏声音Handler myHandler = new Handler()/用来更新UI线程中的控件 public void handleMessage(Message msg) if(msg.what = 1)/WelcomeView或HelpView或GameView传来的消息,切换到MenuView绅薮疮颧訝标販繯轅赛。 initMenuView();/初始化并切换到菜单界面 else if(msg.what = 2)/MenuView传来的消息,切换到GameView initGameView();/初始化并切换到游戏界面 else if(msg.what = 3)/MenuView传来的消息,切换到HelpView initHelpView();/初始化并切换到帮助界面 ; public void onCreate(Bundle savedInstanceState) /重写的onCreate饪箩狞屬诺釙诬苧径凛。 super.onCreate(savedInstanceState);/全屏requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN , 烴毙潜籬賢擔視蠶贲粵。 WindowManager.LayoutParams.FLAG_FULLSCREEN);startSound = MediaPlayer.create(this, R.raw.startsound);/加载欢迎声音鋝岂涛軌跃轮莳講嫗键。startSound.setLooping(true);/设置游戏声音循环播放 gamemusic = MediaPlayer.create(this, R.raw.gamemusic);/游戏过程的背景声音撷伪氢鱧轍幂聹諛詼庞。gamemusic.setLooping(true);/设置游戏声音循环播放 this.initWelcomeView();/初始化欢迎界面 public void initWelcomeView()/初始化欢迎界面 this.setContentView(new WelcomeView(this,this);/切换到欢迎界面踪飯梦掺钓貞绫賁发蘄。 if(isSound)/需要播放声音时 startSound.start();/播放声音 public void initGameView()/初始化游戏界面 this.setContentView(new GameView(this,this); /切换到游戏界面婭鑠机职銦夾簣軒蚀骞。 public void initMenuView()/初始化菜单界面 if(startSound != null)/停止 startSound.stop();/停止播放声音 startSound = null; if(this.isSound)/是否播放声音 gamemusic.start();/播放声音 this.setContentView(new MenuView(this,this);/切换View譽諶掺铒锭试监鄺儕泻。 public void initHelpView()/初始化帮
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人力资源管理师考试重点及模拟题集
- 五数打电话教学课件
- 2025年酒店管理中级职称考试预测题及备考攻略版
- 2025年特岗教师招聘备考策略初中语文专业知识重点复习方向解析
- 电剪安全知识培训总结课件
- 电冰箱的清洗与维护
- 2025年求职面试全攻略手册各行业模拟题集与答案详解
- 2025年电子商务运营实操模拟题及解析
- 产教融合教学课件模板
- 2025年特岗教师招聘考试初中语文考试题型分析
- 手持电动工具培训
- 医疗康养项目运营方案
- 公司合资成立方案
- 企业环境安全健康EHS培训课件
- SES N 3293 试验测试标准
- 建筑施工重要环境因素清单控制清单
- CPK数据图表生成器
- 割草机 打草机 割灌机正确使用方法
- 医保异地备案个人承诺书
- 新教师入职培训-如何上好高中化学课
- 小学道法一 最广泛、最真实、最管用的民主课件
评论
0/150
提交评论