基于安卓平台记忆大爆炸游戏设计与实现.doc_第1页
基于安卓平台记忆大爆炸游戏设计与实现.doc_第2页
基于安卓平台记忆大爆炸游戏设计与实现.doc_第3页
基于安卓平台记忆大爆炸游戏设计与实现.doc_第4页
基于安卓平台记忆大爆炸游戏设计与实现.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

巢湖学院2013届本科毕业论文(设计) 本科毕业论文(设计)题 目 基于安卓平台记忆大爆炸游戏设计与实现 院(系) 电子工程与电气自动化学院 专 业 电子科学与技术 学生姓名 滕晓洋 学 号 09026222 指导教师 李素平 职称 助教 论文字数 完成日期:2013年5月10日27巢湖学院本科毕业论文(设计)诚信承诺书本人郑重声明:所呈交的本科毕业论文(设计),是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。本人签名: 日期: 巢湖学院本科毕业论文 (设计)使用授权说明本人完全了解巢湖学院有关收集、保留和使用毕业论文 (设计)的规定,即:本科生在校期间进行毕业论文(设计)工作的知识产权单位属巢湖学院。学校根据需要,有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许毕业论文 (设计)被查阅和借阅;学校可以将毕业论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编毕业,并且本人电子文档和纸质论文的内容相一致。保密的毕业论文(设计)在解密后遵守此规定。本人签名: 日期: 导师签名: 日期: 基于android平台的记忆大爆炸游戏设计与实现摘要随着智能手机的快速普及,为了让智能手机用户能够随时随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网以及互联网访问web网站并处理各种各样的业务。因此智能手机的应用开发在21世纪移动互联时代就显得尤为重要。此论文提出了一款基于安卓系统的记忆大爆炸游戏,并通过解析这款游戏的开发和实现,来了解安卓系统的工作机制。此种游戏为益智类游戏,其主要内容有“欢迎界面”、“菜单选择”、“游戏设置”、“开始游戏”、“游戏教程”、“游戏退出”等模块,并设计各个模块的功能和实现方式。降低模块与模块的内聚。主要对该游戏进行总体的分析和设计,对内部算法的具体处理和详细的计算进行阐述。运用多线程技术,对游戏中用到的安卓动画过程做具体介绍。关键字:安卓;游戏;动画;design and implementation of memeory game of the big bang based on the android platformabstractalong with the rapid popularity of smartphones, in order to make smart phone users can query the services provided by the internet anytime and anywhere, a highly efficient way is to the function of the application system development on the handset, keep the cell phone can be mobile and internet access to the web site and deal with all kinds of business. so smart phone application development in the 21st century era of mobile internet is particularly important.this paper puts forward a based on android memory game to the big bang, and through analyzing the development and implementation of the game, to understand the working mechanism of the android system.this game for educational classes, its main content is welcome screen, menu selection, game settings, start game, game tutorial, exit game and other modules, and design the various modules function and implementation approach. reduce the module and module cohesion.mainly to the overall analysis and design of the game, the specific processing of internal algorithm and the detailed calculation. using the multithreading technology, to use android in the game animation process to introduce specifickey words:android, game, animation目录 基于android平台的记忆大爆炸游戏设计与实现i摘要i1.绪论11.1 研究意义11.2 研究状况与发展趋势12.android开发前的准备22.1 系统需求分析22.2 对性能的规定32.3 android开发环境33.游戏界面设计43.1 欢迎界面设计43.2 菜单界面设计43.3 游戏进行中界面设计54.游戏实现64.1 框架的搭建64.2 欢迎界面实现84.3 菜单界面实现94.3.1 菜单主界面94.3.2 游戏帮助界面114.3.3 游戏关于界面124.3.4 游戏设置界面124.3.5 游戏成就界面134.3.6 游戏退出154.4 游戏进行中界面实现154.4.1 游戏主界面154.4.2 游戏过关界面194.4.3 游戏失败界面214.4.4 游戏暂停界面214.5 加载界面实现225.软件运行测试245.1 测试环境245.2 功能测试245.3 兼容性测试256.总结25参考文献27致谢281. 绪论android平台的框架是由操作系统、中间件、用户界面和应用软件组成。底层的基础为linux内核,android系统的效果图由c开发,并且只提供基本功能。最上层为应用软件层,包括通讯软件程序等,是由各公司用java开发。google通过与各软、硬件开发商等建立合作伙伴的关系,希望能建立标准的、开放式的移动软件平台。1.1 研究意义手机的发展也带动了手机游戏产业的快速发展。在人们的生活中有许多的游戏,但不同的游戏会带给玩家不同的感受和生活理念。游戏时人们日常生活的一个必不可少的娱乐项目,同时也带动了游戏相关产业市场的发展。游戏平台经过从游戏机到电视游戏,然后到pc游戏,再到手机游戏,中间经历了很多技术的更新和变革。因为智能手机的普及,基于手机平台的游戏也就拥有了巨大的市场空间,也因随着3g的开通和应用,手机游戏必然会迎来新的一轮游戏热潮。android系统平台作为当下最为火热的平台,本文拟设计一款游戏,以深入理解android系统的工作机制。java语言作为一种跨平台的语言,可用于开发android应用,通过本文亦希望能够进一步的理解,掌握该语言。此游戏是一款益智类的游戏,通过它深入理解游戏开发的过程,以及游戏开发的架构搭建。理解安卓图形、动画、音频等的实现,理解游戏开发思路和实现技术1.2 研究状况与发展趋势1997年出现了最早的手机游戏,经过了十几年的发展和变革,随着手机移动终端和移动通信网络的不断进步,手机游戏正在经历由简单到复杂的演变过程。带动移动数据业务快速发展的手机娱乐服务,伴随着网络和移动终端性能的不断提高,呈现出快速增长势头2。2010年,中国的手机游戏玩家规模已经突破了1.3亿,同比增长52.11%,同期的中国手机游戏的市场规模已达33亿。2011年中国的手机游戏玩家规模已达1.62亿人。伴随着智能手机的普及和游戏获取门槛的降低,以及手机游戏在产品类型和用户体验上都有很大的提高,未来中国手机游戏玩家的规模还有很大的上升空间。2012年中国手机游戏玩家的规模已达2.13亿,中国手机的网络游戏市场规模已达4.42亿元。随着手机宽带的不断提速,互联网从pc过渡到手机的趋势正在加快蔓延,这也为手机游戏业的兴起造就了新的商业机遇。在移动互联网时代,开发者纷纷逃离营运商的束缚,转向利润较为丰厚的应用程序和游戏开发。手机游戏软件在消费者中深受欢迎,如果想在未来手机应用程序开发中实现规模则需要加大手机游戏方面的开发力度。手机游戏研发的重点是游戏情节和游戏界面。游戏情节的创作依赖人的想象力和创造力。行业竞争的激烈也导致雷同的不少游戏情节出现,这就要求创作人员不断发挥才能。从最初按键操纵到后来的屏幕多点触控,已是一个趋势。本文则是在多点触碰操作灵感下的一款小游戏设计。目前的android手机游戏可以大致分为:经营策略、动作竞技、休闲益智、网络模拟、体育竞技、射击冒险和角色扮演。2. android开发前的准备2.1 系统需求分析在android智能手机平台上实现记忆大爆炸益智游戏。玩家的目的是要记住礼物摆放的先后顺序,再根据记忆,根据原来的顺序依次点击屏幕上的方块以找到礼物,从而获取分数,在连击时间槽耗尽之前找到所有礼物将形成连击,达成特定条件可以解锁成就。如果点击顺序错误,减少生命点数,当生命为零时游戏结束。用以锻炼人的记忆能力。实现各个目标的具体需求:(1) 游戏框架设计(2) 刚进入游戏时的欢迎界面设计与实现(3) 菜单主界面的设计与实现(4) 将菜单封装成一个对象,对菜单类的设计与实现(5) 对一些通用界面、通用的功能进行统一处理的工具类的设计与实现(6) 游戏进行时界面的设计与实现(7) 将物品封装成一个对象,对物品类的设计与实现(8) 对游戏中用到的状态机进行设计与实现(9) 数据存储数据库类的设计与实现2.2 对性能的规定在对游戏各个界面的设计过程中,始终坚持清晰了然。由于是运行在手机上面,而不是电脑上面,所以对游戏的性能要求就更加严格,内存的使用要尽量的低,很多游戏在一开始进入游戏后就将所有的资源加载到游戏中,这样在后面的游戏过程中就不需要加载而直接从内存中读取数据,但这样有些资源用不到的情况下也被加载到内存中,对手机内存的要求较高,而本游戏通过只加载需要的资源部分来降低手机内存的使用,这样就需要加载界面来加载需要的资源而没用到的资源则不加载。如果采用android系统的绘图方式,会发现绘制的图片在移动时会发生晃动的情况,虽然可以通过提高帧率的方式来减缓晃动的幅度,但不能从根本问题上解决。因为android的绘图是先将图片绘制到画布上,再一同绘制到屏幕上,所以为了解决由于移动而带来的晃动问题,我通过旋转画布的方式。在原坐标系下可能沿着任意的方向移动,在新坐标系下则始终沿着坐标轴方向运动就不会出现晃动问题,而内存的开销方面相比之前并没有过多的开销。2.3 android开发环境android的上层应用程序是用java语言开发,同时还需要基于dalvik虚拟机,所以,要用的是开源的eclipse集成工具和安全的java语言。当然只有eclipse还不够,因为是使用java语言进行开发,还应该有由sun公司提供的java jdk(java开发所需要的开发工具包)。此外,android的应用程序开发和java开发有较大区别的,所以还需要有google提供的android sdk(android平台开发所需要的开发工具包)。同时,还需要在eclipse安装adt插件,为android开发提供开发工具的升级或者变更,是eclipse下开发工具的升级下载的工具。简言之,需要以下软件,才能搭建android开发环境,从而进行android游戏的开发。(1) java jdk(2) eclipse(3) android sdk(4) adt插件3. 游戏界面设计3.1 欢迎界面设计欢迎界面是对用户初进入游戏的友好界面和游戏信息设置。界面设计如下:是否设置音乐开场logo声音关声音开开图3.1欢迎界面设计框架3.2 菜单界面设计菜单界面是对一些常用功能的一种集成,能引导用户更好地游戏,提高用户的体验度。包括:(1)“开始游戏”,点击跳转到游戏界面,开始游戏,(2)“游戏帮助”,简单介绍一下此游戏的一些基本功能和玩法,(3)“游戏关于”,对于本游戏的一些信息介绍,(4)“游戏设置”,玩家可以选择是否打开背景音乐,(5)“游戏成就”,在游戏过程中所获得的奖励,(6)“退出”,点击退出游戏。菜单界面设计具体如下: 开始菜单主界面声音关声音开开关于帮助设置成就退出是否图3.2菜单界面设计框架3.3 游戏进行中界面设计为了更好地吸引用户,提高用户的体验度,合理的设置游戏的难度和情节是有必要的,在游戏的过程中适当的添加奖励机制和惩罚机制。过关时根据用户的操作连击点数来判断其是否可获得分数和成就,如果未能完成任务,则生命将会减少。界面设计如下:进行中游戏主界面帮助继续开失败过关暂停退出否是菜单主界面获取成就开图3.3游戏中界面设计框架4. 游戏实现4.1 框架的搭建在编写游戏代码之前,必须要仔细的理顺思路,清晰的构建出整个游戏的框架,不然游戏开发到最后总是千头万绪,一旦出现bug就不知道该如何修改。(1) 借鉴mvc架构思想,将游戏分成四层,将视图(即界面展示)、逻辑(画面的移动)、数据保存和统一工具类分开来开发,这样如果视图出问题了(即界面绘制的位置有问题),只需要更改视图层而不需要更改逻辑层和数据库层。每一个界面类中都有paint绘图方法和run逻辑处理方法,将视图和逻辑分开以便于维护和修改,使得代码的可维护性和二次开发容易度提高。(2) 游戏状态机的实现方式是通过变量来控制当前游戏状态,在游戏主线程中只更新绘制当前游戏状态下的内容。各界面的跳转是通过状态机来进行的。例如:switch (gs.gamestatus) case gs.game_into:/ 游戏paintgameinto(g, p);break;case gs.game_suc:/ 过关paintgamesuc(g,p);break;case gs.game_err:/ 失败paintgameerr(g,p);break;case gs.game_pause:/ 暂停通过更改gs.gamestatus来切换不同的界面,而其他状态下的逻辑将不执行、界面将不绘制,通过状态机能够很方便的改变界面,使得代码也比较清晰,可读性较高。(3) 保存数据,在游戏中需要长期的存储一些游戏生成的数据,例如玩家对游戏背景音乐的开关设置,游戏过程中所获得的成就和分数,剩余生命值,所使用的特定功能次数等,都需要保存。首先创建一个类myhelper,在此类中声明数据库的基本信息,再通过db类建立、更新和打开数据库。对数据库进行增、删、改、查等操作。(4) 工具类的目的是将一些常用的方法封装在一个类中,这些方法不依赖于任何界面,并能在各个界面通用, gs类:将各个界面所用到的状态变量进行统一管理。 ps类:系统配置参数管理,包括系统配置固定参数、字体、声音、图片和数据库。 gamedata类:游戏中的一些数据管理,包括点阵字渐变效果和文本性文字单色等。 layerdata类:对于每关的关卡数据进行管理,当前所在的关卡,总关卡,该关分数,总分数和当前关的成就等。 uib类:模拟android按钮,检测矩形碰撞,看手指是否点击了该按钮。strdata类:各界面中用到的字符串。 sound类:背景音乐和音效的管理。音乐的播放、音乐停止以及对于音乐资源的加载和释放。进行中界面paint方法视图层欢迎界面paint方法菜单界面paint方法加载界面paint方法图4.1.1视图层框架进行中界面run方法逻辑层欢迎界面run方法菜单界面run方法加载界面run方法图4.1.2逻辑层框架数据库层myhelper数据库辅助类db数据库管理类图4.1.3数据库层框架sound声音管理类统一工具类layerdata关卡管理类strdata文字管理类uib按钮管理类gs状态机管理类ps属性状态管理类gamedata游戏数据类you图4.1.4工具类框架4.2 欢迎界面实现画面的动态切换,当第一张图片显示的时间达到定值时通过更改状态机来切换下一张图片的显示。switch (logostatus) case logo_pic:if (logotimeo = 0) logotimeo = t.gettimec(); else if (t.gettimec() - logotimeo = logodelay) logotimeo = t.gettimec();logonumc+;if (logonumc = logonumo) logonumc = 0;setlogostatus(logo_sound);case logo_sound:break;4.3 菜单界面实现当用户进入此界面时,根据用户的需要来查看不同的功能,帮助用户了解游戏的操作。4.3.1 菜单主界面图4.3.1 菜单主界面(1).将图中的各个菜单封装成对象为menu,此对象拥有的属性有:绘制时的x,y坐标;所代表的图片下标bitmapindex;所代表的的菜单下标menuindex;动画移动实现控制 ismoveup;(2).菜单动画逻辑处理控制菜单上下移动:通过控制菜单对象中的y坐标和动画控制属性,在线程中不停的刷新,来控制其上下摆动。/控制菜单上下移动for(i = 0;imenudefaulty+5)movemenuarrayxi.setmoveup(false);else if(movemenuarrayxi.gety() -150*clickleftnum)menudx -= 10;curmenudy_n -= 3;curmenudy_c += 3;arrowdx -= 25;for(i = 0;imovemenuarrayx.length;i+)if(movemenuarrayxi.getx() -20)movemenuarrayxi.setx(sharectrl.sc.maxxinarray(movemenuarrayx)+150);movemenuarrayxi.setx(movemenuarrayxi.getx()-10);elseinitmoveleft();/控制菜单向右移动if(ismoveright)if(menudx 150*clickrightnum)menudx += 10;curmenudy_n -= 3;curmenudy_c += 3;arrowdx += 25;for(i = 0;i w_fixed+50)movemenuarrayxi.setx(sharectrl.sc.minxinarray(movemenuarrayx)-150);movemenuarrayxi.setx(movemenuarrayxi.getx()+10);elseinitmoveright();4.3.2 游戏帮助界面图4.3.2 游戏帮助界面当用户不知如何玩此游戏时,可通过该帮助界面了解到此游戏的玩法和规则,点击帮助菜单,将会提示我们应该如何进行操作。文字滚动动画逻辑处理:使用android系统的截图方法,固然可以解决滚动动画,但直接使用系统级的方法总是那样的繁琐,自定义一个类工具类toolpic,里面封装一个方法paintregionimage方法用于处理图片的截取和显示。public void paintregionimage(canvas g,paint p,bitmap b, int srcx, int srcy, int srcw, int srch, int absx, int absy, int anchor)g.save();src.set(srcx,srcy,srcx+srcw,srcy+srch);switch(anchor)case anchor_chv:/中心点绘制dst.set(absx-srcw/2,absy-srch/2,absx+srcw/2,absy+srch/2);break;case anchor_lu: /左上角绘制dst.set(absx,absy,absx+srcw,absy+srch);break;/其他g.drawbitmap(b,src,dst,p);g.restore();帮助文字从下往上滚动逻辑实现,通过控制截取的起始坐标来实现滚动。public void runhelp()helptextstarty +;if(helptextstarty = 581)helptextstarty = -305;4.3.3 游戏关于界面图4.3.3 游戏关于界面关于界面是对游戏的一些基本信息做一个简要说明。4.3.4 游戏设置界面图4.3.4 游戏设置界面设置界面对于游戏的背景声音进行设置。4.3.5 游戏成就界面图4.3.5 游戏成就界面当在游戏中连击数达到一定时就能获得奖励成就。成就界面翻页动画的实现:翻书的效果可以看成是由一定的动作帧组成,每帧的大小相同。这些帧在线程中不断地刷新,就能形成连续的画面。pageturningindex记录翻页的哪一帧,总共有6帧。private void runachieve()/向左翻页或向右翻页逻辑处理if(ispagemoveleft|ispagemoveright)pageturningindex +;if(pageturningindex = 6)pageturningindex = -1;ispagemoveleft = false;ispagemoveright = false;翻页绘制实现:/* 绘制翻页动画 istransform :是否将图片变为镜像图片*/private void paintturningpage(canvas g,paint p,boolean istransform)switch (pageturningindex) case 0:paintpage(g, p, pic.imagesrcs(36), 677, 349, t.anchor_chv,istransform);break;case 1:paintpage(g, p, pic.imagesrcs(37), 656, 328, t.anchor_chv,istransform);break;case 2:paintpage(g, p, pic.imagesrcs(38), 636, 305, t.anchor_chv,istransform);break;case 3:paintpage(g, p, pic.imagesrcs(39), w_fixed * 3 / 4 + 10,h_fixed / 2 - 40, t.anchor_chv, istransform);break;case 4:paintpage(g, p, pic.imagesrcs(40),w_fixed * 3 / 4 - pic.imagesrcs(40).getwidth() / 2, h_fixed / 2 - 50, t.anchor_chv, istransform);break;case 5:paintpage(g, p, pic.imagesrcs(41), w_fixed / 2- pic.imagesrcs(41).getwidth() / 2 + 20, h_fixed / 2 - 10, t.anchor_chv, istransform);break;/* * 绘制页面翻转动画 */private void paintpage(canvas g,paint p,bitmap b,int x,int y,int anchor ,boolean ismirrortrans)if(ismirrortrans)/通过统一工具类toolpic类来绘制t.tp.paintimage(g, p, b, w_fixed-x, y, anchor, t.trans_mirror);else t.tp.paintimage(g, p, b, x, y, anchor);4.3.6 游戏退出图4.3.6 游戏退出界面当用户需要退出游戏时,通过此界面退出可以将该游戏所占用的资源全部释放掉。private void disdata() / 暂做释放处理muauplayer.muaup.dismadata();pic.systema = null;pic.clearsrcs();t.cv.destroydrawingcache();t.cv = null;t.logtag(logkey, 释放);4.4 游戏进行中界面实现4.4.1 游戏主界面图4.4.1 游戏主界面游戏进行中的界面类为gamecanvas,此类可以说是整个游戏的最重要的部分,整个绘制背景,物品的摆放动画,时间进度条的改变和用户操作都封装在此类中。在这个类中,用户主要是观察物品出现的顺序,在进行相应的操作,如果如果忘记了物品顺序,则可以通过重新播放来重新观察,当然该功能有次数限制。(1) 时间进度条的动画实现:从放置物品开始计时,在规定的时间范围内能正确的依次找出所放物品的位置,才能完成任务。/时间进度条逻辑处理,记录系统当前时间并比较if(t.gettimec()-cursystemtime systemwaittime)cursystemtime = t.gettimec();if(usetime != maxtime)usetime +;if(usetime = maxtime)usetime = maxtime;通过canvas对指定大小的矩形在画布指定位置上进行切割显示以实现进度动画:g.save();/在画布上切割指定大小的矩形g.cliprect(w_fixed/2-pic.imagesrcs(69).getwidth()/2,0,w_fixed/2-pic.imagesrcs(69).getwidth()/2+progressdefaultwidth*usetime/maxtime,480);/绘制时间进度条t.tp.paintimage(g,p,pic.imagesrcs(69),w_fixed/2,progressdefaultheight+2,t.anchor_chv);g.restore();(2) 物品放置动画实现:物品出现的位置是随机的,按照关卡的上升的方式计算以获得在该关卡下的物品出现的个数。物品会按照时间间隔依次出现。物品缩放动画,当物品开始出现时会有由小变大的过程:if(isscale)if(scale != 1)scale -;elseisscale = false;scale = 5;orderbitmaps.get(orderbitmaps.size()-1).setscaled(false);放置物品,每隔一段时间通过t.getrandom方法获得随机数生成物品放置的位置。为保证随机数产生的数都不相同,将物品放置的每个可能的位置放到gridnumremind的列表中,当随机到一个位置后,将gridnumremind列表中的相同的位置移除掉以保证下次的产生的随机位置不重复。当物品放置完成后,物品会隐藏起来,等待用户去寻找。private void putgoods()if(t.gettimec()-curtime waittime)isscale = true;curgoodsnum +;if(curgoodsnum ordergoodsnum)isputgoodsdown = true;curgoodsnum = 0;for(gameinfo info : orderbitmaps)info.setvisible(false);return;curtime = t.gettimec();j = t.getrandom(gridnumremind.size();orderbitmaps.add(new gameinfo(gridnumremind.get(j), t.getrandom(maxgoods)+82,true);gridnumremind.remove(j);(3) 物品放完,触碰检测:当物品放置完成后,将接受用户的触屏检查。如果点击的位置顺序与物品放置时的顺序相同,则会有相应的奖励,过关成功。如果点击顺序错误,生命值减少,过关失败。 碰撞检测:为了提高游戏运行的效率,降低消耗手机内存,采用矩形碰撞检测方法,判断触摸点是否在矩形范围内。public boolean ispointinrect(int x,int y,rect r)return x=r.left&x=r.top&y= -20)addscoredy -= 2;else isscorechange = false;/生命值更改if(islifechange)if(lifechangedy = -40)lifechangedy -= 2;elseislifechange = false;lifechangedy = 0;4.4.2 游戏过关界面图4.3.2 游戏过关界面此界面为用户完成一关后,对用户的得分情况,以及奖励情况作说明。如果获得成就,成就就会从天而降有种震动屏幕的效果。成就动画实现:通过线程刷帧不断地改变“成就”图所绘制的坐标,来实现从天而降的动画。if(doublehinty != 180)/控制成就图片的移动逻辑doublehinty += 20;else/屏幕震动效果shakingscreen();/控制连击数if(doublehintx != 300)doublehintx += 50;curtime = t.gettimec();elseif(t.gettimec()- curtime 800)doublehintx += 50;/屏幕震动效果shakingscreen();抖屏的目的是成就或连击从移动到突然停止时,有种打到屏幕上产生晃动的效果。/控制屏幕图片左右移动的次数if(centerxmovetimes != 0)centerxmovetimes-;elsecenterx = 400;return;/控制屏幕背景图片绘制的x坐标左右来回变化来达到抖屏的目的if(centerdx 0)iscentermoveleft = true;else if(centerdx 0)iscentermoveleft = false;if(iscentermoveleft)centerdx -= 2;elsecenterdx += 2; centerx += centerdx;curtime = t.gettimec();4.4.3 游戏失败界面图4.4.3 游戏失败界面此界面为用户过关失败后,“游戏结束”四个大字将从小放大,达到一定的大小将产生抖屏效果。动画缩放的处理:canvas 中通过matrix的矩阵运算对画布进行缩放处理。并在操作前后需要加入save()方法保存当前的设置和restore()方法恢复上次save()中保存画布的状态4.4.4 游戏暂停界面图4.4.4 游戏暂停界面当用户正在游戏时,突然临时有事,或突然接到电话,这时游戏处于暂停状态。如需继续可点击继续游戏或回主菜单退出游戏。4.5 加载界面实现图4.5 游戏加载界面加载界面是游戏从一个主界面到另一个主界面时对即将进入的主界面里的资源进行初始化的过度界面,通过创建一个线程来加载需要的资源,而不是在主线程中加载,目的是防止耗时的任务会卡死界面,导致程序停止运行。对于手机性能非常好的手机,可以通过一次加载全部的资源来省去过度界面的等待时间也是一件好事,但对于手机性能不好的手机,有时会直接运行不了,因为内存开销太大了,所以加载界面加载部分资源非常适合用于性能不好的手机。(1) 资源的释放与加载:private void refdata() / 获取loading切换时的状态int loadingstatus = loadingcanvas.status;/ 释放点阵字缓存t.fg.clearvsfont();/ 各界面释放资源gamelogocanvas.disingdata();gamemenucanvas.disingdata();gamecanvas.disingdata();/ 载入指定界面的资源switch (loadingstatus) case loadingcanvas.logo:/欢迎界面资源加载gamelogocanvas.loadingdata();break;case loadingcanvas.menu:/菜单界面资源加载gamemenucanvas.loadingdata();break;case loadingcanvas.game:/游戏运行中资源加载gamecanvas.loadingdata();break;default:break;(2) 通过新线程去加载资源,创建一个runnable实例,并通过创建thread实例来创建一个线程用以加载耗时的资源。public runnable rb2 = new runnable() public void run() refdata();isloading = false;(3)当资源加载完成并加载进度条到达最大值时界面跳转到指定的界面上,更改状态机,通过状态机去管理要到达的界面if (!mainactivity.bffa.isloading & progresstemp = progresso) switch (status) case logo:mainactivity.bffa.showimpl1();break;case menu:mainactivity.bffa.showimpl2();break;case game:mainactivity.bffa.showimpl3();break;5. 软件运行测试游戏测试的目的:主要是测试游戏界面是否与设计的效果相吻合、运行的效果是否良好、功能是否完善、性能是否稳定。5.1 测试环境硬件:装有android4.0系统的索尼mt25i手机一部、usb线一根,电脑一台,通过usb保持相连并处于同步状态。软件:eclipse3.7、android 2.2 sdk、索尼mt25i手

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论