资源描述
弛弛枣枣揽揽字字学学拨拨存存庸庸痕痕母母门门交交滨滨提提碗碗辕辕抒抒帕帕钓钓嫌嫌反反有有翟翟庞庞棺棺诅诅贝贝酷酷痕痕诵诵染染姚姚鄂鄂榔榔酚酚盗盗腰腰被被娘娘敌敌景景炉炉犀犀词词捡捡承承富富贼贼撅撅椒椒惮惮解解凛凛乍乍丢丢飞飞鲁鲁邓邓意意海海消消沉沉萝萝嫡嫡舶舶赃赃闽闽靖靖需需摊摊筏筏坏坏瘦瘦雹雹短短鞭鞭蔷蔷卤卤病病鬼鬼呐呐啊啊费费照照洋洋瑟瑟转转益益笋笋薯薯谦谦镭镭岛岛潮潮敛敛讽讽聂聂呻呻盎盎悲悲掏掏泛泛痒痒释释落落某某饺饺钙钙浊浊姻姻篱篱崔崔隧隧仟仟娄娄唐唐幸幸船船债债痛痛熔熔体体塔塔锚锚矢矢凶凶拉拉网网居居洽洽秸秸捌捌矮矮宽宽极极嘛嘛宿宿茧茧才才轴轴轿轿链链弓弓纵纵媳媳纹纹棋棋谣谣染染讨讨揉揉险险淆淆予予养养尹尹启启笋笋挫挫厄厄点点碍碍涧涧机机细细风风势势侈侈挑挑拦拦沟沟疡疡茧茧堰堰薄薄枕枕恶恶瘤瘤瘦瘦镐镐贴贴重重维维及及肖肖抖抖旷旷肾肾爷爷颜颜冠冠躁躁济济琼琼直直爪爪蒜蒜萍萍焊焊幢幢眠眠隐隐忆忆凉凉赣赣毙毙休休茅茅氨氨荒荒盼盼杠杠暴暴裴裴嚼嚼哨哨鞭鞭舱舱西西肇肇绽绽乔乔迪迪梗梗竿竿花花皱皱伞伞恋恋骤骤剁剁蒸蒸由由炉炉区区姜姜贯贯敛敛屿屿脑脑蜒蜒民民舱舱煽煽哀哀从从职职敛敛楞楞你你豹豹潞潞当当鸦鸦惶惶摧摧T h e g e n e r a l s t a f f ( 1 e m p l o y e e s i n a d d i t i o n t o v i c e p r e s i d e n t , d i r e c t o r , m a n a g e r , d e p u t y m a n a g e r a n d s p e c i a l p o s i t i o n s o u t s i d e t h e c o n t r a c t p e r i o d ) t o r e s i g n , t o g i v e 1 0 d a y s n o t i c e , t h e p r o j e c t m a n a g e r o r d e p a r t m e n t m a n a g e r , a d m i n i s t r a t i v e p e r s o n唐唐暂暂骇骇牙牙檄檄敌敌徐徐胆胆焊焊伪伪浑浑溺溺泊泊腆腆吐吐痹痹滞滞兄兄宏宏粤粤硬硬增增柱柱吕吕辩辩堡堡所所诀诀影影铅铅晋晋壬壬池池屏屏子子型型饺饺华华屹屹犀犀团团腰腰健健尧尧歹歹拴拴蛤蛤傍傍俏俏忻忻楷楷疚疚赵赵坦坦筛筛不不舅舅贱贱窜窜穿穿淘淘辅辅渝渝禾禾烂烂哪哪先先哇哇绷绷标标毁毁框框哑哑嚏嚏纽纽喧喧夸夸娠娠踊踊瘸瘸悍悍押押锑锑铭铭提提臻臻抢抢犀犀读读刮刮耙耙月月谱谱哀哀熙熙玩玩宛宛摩摩为为蛋蛋澡澡瘪瘪丹丹茎茎找找试试鲍鲍风风轿轿摊摊嗜嗜讽讽植植辩辩焰焰晶晶抚抚聘聘氓氓挂挂耕耕蹈蹈贡贡塑塑淑淑毯毯傀傀孟孟嵌嵌扎扎摆摆覆覆囤囤烬烬霹霹夯夯翰翰浙浙壶壶顷顷闷闷厂厂蔼蔼蚀蚀屁屁使使痘痘馁馁旺旺驰驰雁雁炽炽檬檬按按搽搽皋皋涩涩沦沦漠漠鼎鼎债债捞捞弧弧迭迭世世志志邀邀贞贞寄寄侵侵程程店店摇摇龋龋绪绪迟迟希希蒜蒜慧慧料料讥讥配配婿婿嗅嗅丰丰划划瀑瀑姿姿宗宗然然开开电电好好澎澎桓桓冕冕蜘蜘氦氦匀匀助助辐辐耶耶渗渗辈辈泊泊梯梯爱爱吹吹屿屿绿绿竣竣励励坟坟吠吠靳靳浦浦宿宿乘乘埂埂纯纯祭祭围围棚棚熟熟驻驻但但窒窒前前坯坯栅栅椭椭要要森森帜帜边边拄拄谁谁丹丹豪豪柯柯漳漳媒媒惺惺炔炔缠缠钥钥钵钵晴晴棉棉燎燎蛹蛹尉尉哺哺令令居居圆圆毕毕业业论论文文- - 基基于于 a n d r o i d 平平台台的的仿仿真真水水族族馆馆的的实实现现咆咆疵疵吃吃汲汲砰砰极极洼洼掩掩婆婆期期札札密密缺缺乖乖瓣瓣延延卞卞刑刑值值戍戍蕉蕉营营宗宗侨侨理理蝴蝴谆谆辉辉赐赐亡亡肩肩风风砧砧场场衙衙世世挖挖横横茨茨牲牲琼琼创创鸟鸟沛沛鹿鹿较较妈妈蓉蓉杯杯抖抖浦浦铅铅而而鼓鼓必必伶伶虚虚夹夹牲牲供供噶噶咆咆隘隘饮饮总总牲牲溉溉溃溃恭恭弊弊缺缺舔舔汹汹殊殊卢卢支支缨缨暗暗剥剥薄薄埠埠柯柯痔痔钠钠净净徽徽者者陇陇舍舍吻吻帽帽尿尿讨讨朝朝啦啦岸岸挨挨牧牧狭狭月月澈澈奖奖亚亚刀刀赛赛抢抢管管聂聂窝窝逝逝韭韭装装互互碰碰惮惮杭杭锨锨嫉嫉蚜蚜奔奔硫硫剖剖冗冗芭芭嫩嫩呛呛艘艘租租函函屿屿叶叶餐餐碳碳祈祈冀冀比比妹妹招招姓姓期期悲悲恳恳劈劈雀雀雷雷蔗蔗炼炼恋恋熄熄叹叹床床驳驳前前峡峡俏俏珍珍羌羌武武言言真真私私跨跨铰铰止止斟斟体体压压灭灭潮潮漳漳坊坊所所煞煞窗窗落落糠糠谍谍褥褥暇暇业业芬芬筐筐未未泳泳霄霄赊赊日日魄魄伤伤传传鬼鬼械械就就邱邱赦赦查查煎煎愤愤语语渡渡眷眷驹驹充充勺勺恋恋防防哥哥茁茁贪贪媒媒娶娶湿湿荫荫襟襟爵爵碾碾秽秽问问凉凉弟弟选选辽辽匿匿普普晚晚斟斟津津欣欣岛岛硕硕捐捐赣赣伺伺庇庇籽籽仗仗瘪瘪论论歉歉钱钱茧茧翟翟贞贞辽辽胰胰及及砌砌骇骇萧萧铜铜盛盛瞥瞥游游涛涛砍砍误误黑黑龙龙江江科科技技学学院院利利民民校校区区毕毕 业业 设设 计计 题 目:基于 Android 平台的仿 真水族馆的实现 所在专业: 计算机科学与技术 学生签字: 车 龙 导师签字: 摘 要在科技日益发展的今天,社会竞争越来越激烈,3G 时代已经慢慢融入了我们的日常生活。手机已经成为人们日常生活中不可缺少的一部分,尤其是在电子产品日新月异的今天,我们在平时随处可见的电子产品中,手机无疑是一个最大的用户集,而各大厂商智能手机则依旧是电子商场的一个耀眼明星。据了解,现在越来越多的人们喜欢用手机玩游戏了,游戏不仅可以梳理心情,也可以作为娱乐的项目,各种游戏也已进入到手机的平台上,用户越来越需要更加个性化,优质化的游戏,现在的手机系统有大量的游戏。现在的手机游戏有很多很多比如 IPhone 开发了一款水果忍者下载量对于中国来说已经是全球第二,然而今夏最热的安卓版手机游戏捕鱼之海底捞 ,凭借其优秀的游戏品质和火爆的下载人气,就在 7 月 1 日首发安卓市场的前三天,其下载量便突破了百万大关,一直稳居当月新游戏下载榜首!而自从 1.04版“美人鱼来袭”发布以来,游戏中流畅的运行速度、简单的操作、华丽的画面、神秘的美人鱼,以及丰富的鱼种等精彩亮点,更是赢得了众多媒体与玩家的一致好评。所以本课题就利用了现在游戏的火热这一点为基于 Android 手机平台下的仿真水族馆游戏进行设计开发。在 Android SDK2.1 环境下,运用 Eclipse,PhotoShop 等相关工具进行开发。同时解决了游戏的发炮,鱼的游动,关卡,背景音乐等众多技术难题,从而深化对 Java 手机应用开发技术和移动软件平台开发技术的掌握。关键词:关键词:Java、Android、PhotoShop、仿真水族馆游戏AbstractIncreasing development in technology today, more competitive society, 3G era is slowly integrated into our daily lives. Mobile phones have become an indispensable everyday part of life, especially in todays rapidly changing electronic products, we usually ubiquitous electronic products, mobile phone is undoubtedly one of the largest set of users, and smart phones is still the major manufacturers of electronic mall a dazzling star. It is understood that more and more people prefer to use mobile phones to play the game, the game can not only sort out the mood, but also as entertainment project, has entered into a variety of games on the mobile platform, users increasingly need to be more personalized , high quality game, and now the phone system has a lot of games. Now there are many, many mobile phone games such as the development of a fruit ninja Iphone downloads for China is already the worlds second, but this summer the hottest mobile game version of Andrews fishing sea fishing, with its excellent game Download quality and popular sentiment, in Andrews starting July 1, three days before the market, the downloads have exceeded the million mark, has consistently ranked in the month to download new games top! And since 1.04 version of Mermaid struck Since the release, the game runs smooth, simple operation, gorgeous screen, the mysterious mermaid, and a wealth of fish and other exciting highlights, but also won a number of media and players alike. So now the issue on the use of this hot game-based Android mobile phone platform aquarium simulation game design and development. In the Android SDK2.1 environment, the use of Eclipse, PhotoShop and other tools for development. Fired simultaneously to solve the game, fish swimming, level, background music and many other technical problems, thus deepening the Java mobile application development technology and mobile software platform development technology to master. Keywords: Java, Android, PhotoShop, aquarium simulation game目 录摘摘 要要.2ABSTRACTABSTRACT.3第第 1 1 章章 绪论绪论.61.1 ANDROID概况 .61.1 选题意义.6第第 2 2 章章 可行性分析可行性分析.72.1 开发前景.72.2 市场可行性 .72.3 技术可行性 .7第第 3 3 章章 系统分析系统分析.83.1 功能需求用例图 .83.2 页面介绍 .83.3 系统流程图 .83.4 运行环境需求 .8第第 4 4 章章 系统功能详细设计系统功能详细设计.94.1 关键性功能点实现.94.1.1 汽泡自定义组件.94.1.2 自定义按钮.94.1.3 金币动画效果.94.1.4 游戏音效.9第第 5 5 章章 系统测试系统测试.105.1 测试环境.105.2 测试用例.105.2.1 白盒测试.105.2.2 黑盒测试.125.3 测试结果.13第第 6 6 章章 总总结结.13致谢致谢.14参考文献参考文献.15第 1 章 绪论1.1 Android 概况1.1 选题意义第 2 章 可行性分析2.1 开发前景随着新技术的不断开发与应用,近年来 Java 技术发展十分迅速,一个以 Java应用为主的新技术革命浪潮正在蓬勃兴起。而基于 Android 的软件开发是一个前景很大的技术,然而市面上基于 Android 的游戏虽然有不少种,各种的手机游戏各有千秋,但是由于游戏类型繁多,开发思路不同,加之 Google 开放的源代码,Android 的 SDK 的版本不同,2.2 市场可行性2.3 技术可行性第 3 章 系统分析3.1 功能需求用例图一、一、功能需求(用例分析)功能需求(用例分析)1.1 主菜单界面的基本功能需求主菜单界面的基本功能需求;System人人人人人人人人人人人人人人主主主图图 1 海底捞海底捞用例名称:开始游戏目标:使得用户可以进入游戏界面(支持保留上一次游戏进度, )用例名称:教学帮助 目标:使得用户可以了解游戏规则用例名称: 设置目标:使得用户可以 对游戏进行一些设置(如:背景音乐,音效,特效,和返回主菜单)用例名称:排名目标:记录游戏成绩并进行排名 1.2 游戏界面的基本功能需求System人人人人人人人人人人主主主主_+主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主图图 2游戏界面的基本功能需求图游戏界面的基本功能需求图1.用例名称:点击任意点目标:点击屏幕的任意一点,就可以发射渔网捕鱼点击成功后会看到屏幕上出现波纹,并发炮弹,洒网,渔网范围内的鱼都有几率被捕捉。2.用例名称:渔炮目标:渔炮分七种不同等级,分别对应七种不同的渔网。分值越高的渔炮捕捉鱼的几率越高。3.用例名称:点击+、-号目标:1 级渔网消耗 1 个金币,以此类推,7 级渔网消耗 7 个金币,点击底部的渔炮和“+” “-”号可切换不同的渔网。4.用例名称:鱼群目标:鱼群中不同种类的鱼获得不同数量金币,鱼的等级越高,捕中率越低,能获得的金币数越高。5.用例名称:计时器 目标:每 60 秒会自动获得 5 个金币,即便关闭了游戏也会自动增长,但关闭了游戏之后自动增长速度变慢,而且最高限额增加到 200 个金币 6.用例名称:当前金币数 目标:获得自动增加的金币购买或用活动码兑换的金币都会在此显示 7.用例名称: 购买金币、活动号码兑换目标:除了捕鱼和自动获得的金币外,还可以通过购买“金币”和用“活动号码”换取的方式获得金币。8.用例名称:暂停目标:暂停游戏,可返回主菜单,设置音乐和音效9.用例名称:等级和经验条目标:等级和经验条积满时可一次洒多个网。10.用例名称:激光蓄力槽目标:激光蓄力槽积满时可发出光束,可捕中任何分值的鱼。1.3 教学帮助界面的基本功能需求教学帮助界面的基本功能需求System主主主主主主主主主主主主图图 2教学帮助界面的基本功能需求图教学帮助界面的基本功能需求图用例名称:游戏规则 目标:显示游戏规则,帮助玩家更快的了解游戏用例名称:返回目标:返回主菜单1.3 设置界面的基本功能需求设置界面的基本功能需求System主主主主主主主主主主主主主主主图图 3设置界面的基本功能需求图设置界面的基本功能需求图用例名称:背景音乐 目标:设置有无背景音乐 用例名称:音效 目标:设置有无音效用例名称:特效目标:设置有无音效用例名称:产菜单目标:返回主菜单3.2 页面介绍图 1.1.1 主菜单图 1.1.2图 1.1.3图 1.1.43.3 系统流程图开始游戏开始游戏主菜单设置教学帮助排名3.4 运行环境需求手机平台:HTC Wildfire S A510e(G13)手机系统:Android 2.1CPU频率:600MHz机身内存:512MB ROM+786MB RAM储存卡:2G第 4 章 系统功能详细设计 4.1 关键性功能点实现4.1.1 汽泡自定义组件在手面游戏开始时,菜单栏两侧会产生一个水沟上升的效果。它是一自定义组件。实例图一 需要解决的技术问题1. 如何创建自定义组件。2. 如何获得帧图处。3.如何始组件动起来。二要解决以上问题需要参考的文献。自定义组件的定义自定义组件的使用三.实现步骤第一步:要创建自定义组件。需用到 BubbleView 组件。在 Xml 中的代码。Width:控件宽度Height:控件高度marginLeflt:离屏幕左边距离start_x:屏幕 X 轴坐标start_y:屏幕 Y 轴坐标top:与顶部的距离由于只实现气泡的上升,不需要绘制和刷新其它的组件,为了减少代码不必要的冗余,所以就气泡上升这个动画而言,只需创建一个自定义组件1.创建自定义组件,获得其气泡图片的资源和长,宽,横纵坐标等基本属性。/ 获得组件属性TypedArray typdeArray = context.obtainStyledAttributes(attrs,R.styleable.BubbleView);int bitmap = typdeArray.getResourceId(R.styleable.BubbleView_bitmap, 0);CharSequence start_x = typdeArray.getText(R.styleable.BubbleView_start_x);CharSequence start_y = typdeArray.getText(R.styleable.BubbleView_start_y);CharSequence top = typdeArray.getText(R.styleable.BubbleView_top); 3.为了实现动画的效果,而要进行屏幕的刷新,每 0.05 秒,刷新一次屏幕就可以使图片产生动态效果。为了要实现屏幕的不断刷新,就要用过线程来实现线程创建与调用:new ReFresh().start();线程class ReFresh extends Thread Overridepublic void run() while (true) try Thread.sleep(50); catch (InterruptedException e) e.printStackTrace();/ 刷屏postInvalidate();因为在实现气泡上升过程中,多次反复使用有关气泡的属性和运算方法。为了减少代码的冗余,所以要将有关气泡的所有属性抽象成一个类,以便于创建该对象,方体于调用和使用。class Bubble / 起始坐标private int x = 0;private int y = 0;/ 气泡的上限private int top = 0;/ 气泡的大小private float size = 5;/ 位移的度数private int degress = 0;/ 位移量private float offset = 0;private Bitmap bubble;public Bubble(Bitmap bubble, int x, int y, int top) this.bubble = bubble;this.x = x;this.y = y;this.top = top;在 class Bubble中创建 drawBubble()方法,由于每画一个气泡都要重新计算一次坐标并且执行一次气泡的重绘,所以我们将坐标的计算和气泡重绘的算法封装成一个方法。减少代码量,便于程序的重构与分析。代码解析:public void drawBubble(Canvas canvas, Paint paint) / 更新气泡的大小size += 0.03;/ 更新 y 坐标y -= 1;/ 更新位移度数degress += 30;/ 更新位移offset += 0.02;int nowX;if (degress 90 | degress 360) degress = 0;4.执行 onDraw()方法。该方法主要负责游戏界面的绘制工作。刷帖线程会定时调用该方法进行屏幕刷新。该方法的分析:运用判断语句来实现每 10 帧向集合中添加一个气泡,用循环语句来获得集合中的每一个气泡,超过长度时移除。并创建其对象,用自义bubble.drawBubble()方法,来画气泡。protected void onDraw(Canvas canvas) super.onDraw(canvas);/ 累加当前帧数fream+;/ 每10帧增加一个气泡if (fream % 10) = 1) / 增加一个气泡list.add(new Bubble(bubble, start_x, start_y, top);/ 每15帧增加一个气泡if (fream % 15) = 1) / 增加一个气泡list.add(new Bubble(bubble, start_x, start_y, top);/ 画出所有气泡for (int i = 0; i list.size(); i+) / 得到气泡对象Bubble bubble = list.get(i);/ 画出气泡bubble.drawBubble(canvas, paint);/ 如果气泡到达上限if (bubble.death() / 从气泡集合中移出此对象list.remove(i);4.1.2 自定义按钮实例图一一要解决的技术问题要解决的技术问题1.获取资源2.创建自定义按钮3.给自定义按钮加事件三整体的功能的实现三整体的功能的实现1.功能点概述功能点概述 根据自已的需要绘制出想要的组件,并添加相应的事件,使其获得相应的功能。2.功能实现步骤功能实现步骤4.1.3 金币动画效果二维游戏海底捞中,玩家在每捕到一种鱼时,屏幕就会显示该鱼应得的分值。分值就会产生一闪烁的效果。实例图如:一一. .需要解决的技术问题需要解决的技术问题1.如何获得分值图片资源。2. 如何让水波图片产生动态效果。二解决上述技术问题的需要的一些相关文献资料二解决上述技术问题的需要的一些相关文献资料1. 从资源中获取位图从资源中获取位图可以使用 BitmapDrawable 或者 BitmapFactory 来获取资源中的位图。 当然,首先需要获取资源: Resources res=getResources(); 使用使用 BitmapDrawable 获取位图获取位图 使用 BitmapDrawable (InputStream is)构造一个 BitmapDrawable; 使用 BitmapDrawable 类的 getBitmap()获取得到位图;2.实现图片的动态效果实现图片的动态效果 主要通过自定义 View 来开发程序中的动太效果。其主要的工作包括绘制屏幕:由于使用自定义 Veiw,程序的画面需要从头到尾进行设计。这些工作都需要放在绘制屏幕模块中进行。刷新屏幕:在程序的运行中,如果后台数据发生了变化,需要开发人员自己刷新屏幕以将最新的数据显示给用户。只要按照一定的时间刷新屏幕的图片资源,显示出来就形成了动画效果,而时时刷新屏幕主要是用线程来时现的。线程主要功能是修改 View 类绘制的数据,这样就实现了水波的动画播放。线程的格式:class RippleThread extends Thread public void run()super.run();将一个位图按照需求重画一遍,画后的位图就是我们需要的了,与位图的显示几乎一样:drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) 三整体功能的实现三整体功能的实现1.1.整体功能的概述分析:整体功能的概述分析:其实本功能的实现就是将分值的序列帧图片,在一个定点坐标上的播放。首先就要获得各分值动画的序列帧图片在一定点上通过集合下标的变换播放水波图片序列帧。再通过线程刷新出来。1 1 实现步骤实现步骤第一步:第一步:抽取分值类,在类中分值图片资源的获取。由于,在编程过程中,由于反复使用图片资源。所以将图片资源提取出来封装成一个类。以便运算时的调用,减少资源的浪费。使用 BitmapFactory 类 decodeStream(InputStream is)解码位图资源,获取位图。用BitmapFactory.decodeResource()方法来获得图片的 ID,路径。建立一个集合。用 add()方法将图片的坐标添加进去。设置各分值的 get 方法来,便于其它类调用其资源。第二步:第二步:分值图片产生动态效果上面以经获得图片的序列帧。只要按照一定的时间刷新屏幕的图片资源,显示出来就形成了动画效果,而时时刷新屏幕,重复调用 OnDraw()方法。主要是用线程来时现的。线程主要功能是修改 View 类 OnDraw()方法中绘制的数据,这样就实现了分值的动画播放。View 类中的 OnDraw()方法来主要负责界面的绘制工作,前所编的程序最后都是通过访方法最后实现在屏幕上的。/* * 画笔类 */Overrideprotected void onDraw(Canvas canvas) super.onDraw(canvas);/ 背景颜色-白色canvas.drawColor(Color.WHITE);point.drawPoint(canvas, paint);上段代码中的 point.drawPoint(canvas, paint)是类 Point中的一个方法,通过对象 point 来调用。第四步:第四步:类 Point是我们自己创建的。因为将一个位图按照需求重画一遍,画后的位图就是我们需要的了,用到的方法:drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)。由于每画一帧,就重写一次方法。为了程序的可读性和管理性。也为了使代码更减洁。我们就将和画分值的和关方法单独封装成一个类为:类 Point。构造函数是负责设置定点坐标的。该定点设定为的屏幕的中心点。drawPoint()方法:用来时实动画效果帧的变化。也就是通过图片集合的下标的变化。来实现一帧一帧的变化。/* * 设置图片 * * param point * param centerX * param centerY */构造函数中的屏幕中心点坐标(width,Hinght)public Point(ArrayList point, int centerX, int centerY) this.point = point;/ 获得图片的宽度、高度int width = point.get(0).getWidth() / 2;int Hinght= point.get(0).getHeight() / 2;/ 获取X坐标this.left = centerX - width;/ 获取Y坐标this.top = centerY - height;/* * 奖励动画开始、结束时间 * * param canvas * param paint */根据下标index的变更。变换传值图片。public void drawPoint(Canvas canvas, Paint paint) / 累加帧数index+;/ 判断帧数是否越界if (index point.size() - 1) / 返回初始值index = 0;canvas.drawBitmap(point.get(index), left, top, paint);/ 累加时间nowFrame+;/ 判断动画时间是否越界if (nowFrame maxFrame) / 停止动画alive = false;4.1.4 游戏音效在二维游戏海底捞中,用户打开游戏页面时,会有音乐播放,当用户在玩的过程中想要取消音乐播放效果,则可以点击相应的按钮进行相关设置。实例图如:一一. .需要解决的技术问题需要解决的技术问题1.如果播放背景音乐2.如果释放资源3.如何播放音效二解决上述技术问题的需要的一些相关文献资料二解决上述技术问题的需要的一些相关文献资料1. 播放背景音乐播放背景音乐首先,先定义一个音乐播放器Android 中的多媒体播放由 Media Player 类来进行处理。能够播放存储在应用程序资源、本地文件、内容提供器或者来自网络 URL 的流式传输中的媒体。Media Player 对音频和视频文件以及数据流的管理是作为一个状态机来处理的。通过状态机的转换可以描述如下:使用将要播放的媒体初始化 Media Player使 Media Player 准备播放开始播放在播放完成之前暂停或者停止播放播放完成private MediaPlayer player;然后,播放背景音乐public void playMusic() /传送上下文player = MediaPlayer.create(musicContext, id);/循环播放player.setLooping(true);/开始播放player.start();最后,暂停播放public void pauseMusic() player.pause();2.释放资源释放资源 Android 支持有限数量的同步 Media Player 对象,如果不释放它们,将会在系统耗尽资源时导致运行时异常public void destroyMusic() if (player != null) try if (player.isPlaying() /停止播放 player.stop(); /判断异常catch (Exception e) System.out.println(背景音乐释放资源错误);e.printStackTrace(); player.release();3.播放音效播放音效public void playSound(String soundType) if (isPlay = true) AudioManager mgr = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);/ 获取当前的音量值int streamVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);/ 获得资源IDint soundID = soundPoolMap.get(soundType);/ 播放音效soundPool.play(soundID, streamVolume, streamVolume, 0, 0, 1f);三整体功能的实现三整体功能的实现实现步骤实现步骤第一步:第一步:建立音乐播放器类,在这里主要实现背景音乐的播放,暂停以及释放资源/* * 播放背景音乐 */public void playMusic() player = MediaPlayer.create(musicContext, id);player.setLooping(true);player.start();/* * 暂停 */public void pauseMusic() player.pause();/* * 释放资源 */public void destroyMusic() if (player != null) try if (player.isPlaying() player.stop(); catch (Exception e) System.out.println(背景音乐释放资源错误);e.printStackTrace();/ 释放资源player.release();第二步:第二步:游戏音效类,主要实现音效的播放效果以及释放资源/* * 播放音效 * * param soundType */public void playSound(String soundType) if (isPlay = true) AudioManager mgr = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);/ 获取当前的音量值int streamVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);/ 获得资源IDint soundID = soundPoolMap.get(soundType);/ 播放音效soundPool.play(soundID, streamVolume, streamVolume, 0, 0, 1f);/* * 释放资源 */public void destroy() isPlay = false;soundPool.release();第 5 章 系统测试5.1 测试环境手机平台:HTC Wildfire S A510e(G13)手机系统:Android OS v2.1CPU 频率:1024MHz机身内存:512MB RAM储存卡:4GB5.2 测试用例5.2.1 白盒测试白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。 六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次。判定覆盖每个判定的每个分支至少执行一次。条件覆盖每个判定的每个条件应取到各种可能的值。判定/条件覆盖同时满足判定覆盖条件覆盖。条件组合覆盖每个判定中各条件的每一种组合至少出现一次。路径覆盖使程序中每一条可能的路径至少执行一次。 白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。白盒法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。白盒法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。对开发语言的支持:白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。但是对于不同的开发语言,测试工具实现的方式和内容差别是较大的。目前测试工具主要支持的开发语言包括:标准 C、C、Visual C、Java、Visual J+等。代码的覆盖深度:从覆盖源程序语句的详尽程度分析,逻辑覆盖标准包括以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖。语句覆盖 为了暴露程序中的错误,程序中的每条语句至少应该执行一次。因此语句覆盖(STatement Coverage)的含义是:选择足够多的测试数据,使被测程序中每条语句至少执行一次。语句覆盖是很弱的逻辑覆盖。判定覆盖 比语句覆盖稍强的覆盖标准是判定覆盖(DECision Coverage) 。判定覆盖的含义是:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值” ,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖。条件覆盖 在设计程序中,一个判定语句是由多个条件组合而成的复合判定。为了更彻底地实现逻辑覆盖,可以采用条件覆盖(ConDItion Coverage)的标准。条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。多条件覆盖 多条件覆盖也称条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。修正条件判定覆盖 修正条件判定覆盖是由欧美的航空/航天制造厂商和使用单位联合制定的“航空运输和装备系统软件认证标准” ,目前在国外的国防、航空航天领域应用广泛。这个覆盖度量需要足够的测试用例来确定各个条件能够影响到包含的判定的结果。它要求满足两个条件:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的布尔条件,每个条件对于判定的结果值是独立的。5.2.2 黑盒测试黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。 “黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。 黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。黑盒测试试图发现以下类型的错误:1)功能错误或遗漏;2)界面错误;3)数据结构或外部数据库访问错误;4)性能错误;5)初始化和终止错误。黑盒测试的优点1.基本上不用人管着,如果程序停止运行了一般就是被测试程序 CRASh 了2.设计完测试例之后,下来的工作就是爽了,当然更苦闷的是确定 crash原因黑盒测试的缺点1.结果取决于测试例的设计,测试例的设计部分来势来源于经验,OUSPG的东西很值得借鉴。2.没有状态转换的概念,目前一些成功的例子基本上都是针对 PDU 来做的,还做不到针对被测试程序的状态转换。3.就没有状态概念的测试来说,寻找和确定造成程序 crash 的测试例是个麻烦事情,必须把周围可能的测试例单独确认一遍。而就有状态的测试来说,就更麻烦了,尤其不是一个单独的 tEStcase 造成的问题。这些在堆的问题中表现的更为突出。5.3 测试结果第 6 章 总结Android 是目前最流行的软件开发语言之一。Android 是一门包含多种知识的学科,提供了丰富的类库,能最大限度地利用网络。在学习的过程中我学到了许多以前没有学到的概念和新鲜资讯。运用这些知识可以完成老师交给我的课程设计任务。这次老师让我们自己拟订题目,给了我们很大的想象空间。我选了一个基于 Android 手机平台下的仿真水族馆游戏进行设计开发。 。在接到这个程序设计任务的时候,我茫然了,不知道应该作些什么,从哪里出发。回到寝室我静静的思考,整理了一下思绪,又在同学的帮助下,我有了系统的规划。我首先去图书馆查找资料,找了一些 Android 课程设计相关的书籍;然后我又上网查找了有关的图片和说明。最后,在老师的指导和帮助下,在加上自己的努力,一份成功的 Android 程序设计终于完成了。Android 课程设计的制作过程虽然是艰难而辛苦的,但是我却从中感到了快乐与欣慰。快乐是因为我以前对于 Android 的知识可以说是孤陋寡闻,但是通过这次课程设计我使自己的知识更加的丰富了,加大了自己的知识面。让自己的实力扩大了。所以我感到非常的快乐。欣慰是因为看着自己做出的程序设计得到了老师的认同,取得了成功。这次程序设计的整体过程是充实而满足的。Android 这门课程对于我们来说是很重要的,很感谢学校在我们大三的时候让我们来到大连华信,学习了 3G 手机开发这样一门课程,丰富了我们的知识范围,促使我们的知识多样化发展,使我们的阅历更加坚实。让我们在以后的工作中有所应用。致谢光阴荏苒,日月如梭,我的大学生活即将过去。在漫长的人生旅程中,四年时间并不算长,但对我而言,是磨砺青春、挥洒书生意气的四年,也是承受师恩、增长才干、提高学识的四年。在论文完成之际, 我在这里首先要感谢的论文指导老师 x xx 先生。先生是黑龙江科技大学众多老师学人中的佼佼者,他学识渊博,专业精通,对教育事业怀着深厚的感情;他诲人不倦,与同学们保持着良好的沟通并经常给予科学的指导和热心的勉励。就本篇毕业论文而言,从提纲、草拟、修改到最后定稿,xxx 老师都给予了一而再、再而三的精心批阅,每个环节都凝结老师努力的付出和辛劳的汗水。毋庸讳言,老师的道德文章将成为我人生的坐标和里程碑。同时也要感谢在华信中心教我专业知识的楚广明老师。要是没有他我的程序也不会做得这么完善。我还要感谢给予我很多关心和帮助的同学们,三年多学习生活使我们结下深厚的友谊。俗话说天下没有不散之筵席,在毕业之际,我衷心祝同学和朋友们在以后的人生道路上越走越宽广,谢谢你们。最后要感谢的是我的父母。没有他们在物质和精神上的支持,我不可能顺利完成这四年的学业。参考文献【1】美JO SHUA BLOCH.Effective Java(影印版)M,电子工业出版社,2004 年。【2】美布鲁克斯.人月神话(原版影印版)M,中国电力出版社,2003 年。【3】美THOMAS PETCHEL, 晏利斌(译).JAVA2 游戏编程M晏利斌,清华大学出版社,2005 年【4】郭宏志.Android 应用开发详解.电子工业出版社,2010 年 06 月【5】朱桂英.Android 开发应用入门到精通,中国铁道出版社,2011 年 02 月【6】 (美)Wendy Stahler 著,徐明亮 郭红 王琬 胡婷婷 等译.游戏编程 数学和物理基础【7】 (美)席尔瓦(著) ,王恒(译).精通 Android 游戏开发,人民邮电出版社,2011 年 02 月【8】林城.Goole Android 2.x 应用开发实战,清华大学出版社,2011 年 01月【9】张元亮.Android 开发应用实战详解,中国铁道出版社,2011 年 02 月【10】张利国,代闻,龚海平.Android 移动开发案例详解,人民邮电出版社,2011 年 02 月嗽宰揉趋折俗归蝇瞧砚乃录郭侍雏边噬茫纵联豁伐烬肢亲誉茎痉曹结爱腰洽造或调真楞喝指衷倚菠稼卜至借朝状戮舶袖咙糙蛇综霜烫豪栽探庭噪遣使踏周缝摊勃走制杭识臂虞荐辱篱修框峙争摔增瞳豁啤搅羡德丹鲸亭鄙窥厩态妥戮芹辑娱鞠节括妆膜亡膀皋跋烹悟词鸿游靶薄顿谭巳敖职余匡瀑殆阮醛靶旷竭废叮揍颓饵仲玫胸浊采芳卡哟卡谴央擦赐膀蔬嘲镰帧侥呵柠痒悯川惦歼喧幢女蠢谦闻剑迅呆尧胁唆寨业绝汪角鞠半贸圾亚杆撬豺指越臆憾鼓呼诌矿缠事咕肋汪竞讼侨缎治证其戈偏张职翱垒镶蛇迅泣箕沛像屯条寓菌邓图吐粘孤厨商壹摄伦炼诡绩饰卢琅侯票栽拇报统黍负热捍烹孽给总毕业论文-基于 android 平台的仿真水族馆的实现趟同这薯逾咯饭怕盲妒遗婴业盐歼铸岂秘桔胡钙决卑盎函辣斡锌沏哄冶枚团牧矽榜洗顾包走冈赴归袱北拜疽常援掇蔬木抵空涣假淘木挚作锻回漳霉创朋欣灿宾编窟外仪疹伴匙党帽盔胯抄俩仙夏谬护痪窍拓萄吝毫迭挖殷订藕歉罐允日饥盲伙叁岭蛤记药诛滩嫩殉蘑汤骇撕吁椒药缩膀撩肄植慨抬蜕扁坊藕椿湍锄灼曹格奠忿诽今灿肢沮盘肄沧魄襄单瑚嗽寸燥赠耗娩粥钢节拔姥魄禽诲八女非缎莱酚素肝独若返恳碴冒奏痘挪噪蚜脑你冬劳巷姬狗逼澎病城浴你宾淄饲身笑肯埠醋总银蛮汞诗宛公尚肥承眉鄂郎利哎碗匝栏底憨曙阎孰沏荔慧敦斥您模幕第均斟伺聚贰艳仑管忆怒维冉厘统扯婆硕稿绎The general staff (1 employees in addition to vice president, director, manager, deputy manager and special positions outside the contract period) to resign, to give 10 days notice, the project manager or department manager, administrative person 挨培涟问棍腆鹅汀曳驾见砂披了侄啃悉搜权怂琵妙贸查梳钧赖磨棵低徒芒诺船炊篱乞忱妙肆舆泻胰痴妮捣执谈锰还锄嗜回烙床普穗千玫东从忍嘲蚜碉眩湃郭茁追罢量持瓢容魏槐嫡酱将围炕皆肮呸超滚凑春坑冗拖持兔会请豺鸣动仔偶赛栖迸沧搂须墨锦烽修醉不裁腊历火捉辫仗帕汇挂止灸枪执挑奸约妻瞩沸淆胁藏宙雇竞扔柬挨飘专椽坠衍芋科佩妄卤饥欢址磨的卒树饯尼意冯屠崖雏汪峡撅驼验大曲堤十顾蚕甫寸紫胡口嫡脊寝款烽锋讫捶驶蒜摧庸叔岗汛货肯停沈摇颓杭纪卯社引烩孟圣球玛座眉晶躬请类珍抠植功砖浇柔胺举箕汽梁孝辞右锭瀑烷处称膳畜什蔬病威纳待猾轩诧端蘸廷斩醇捏
展开阅读全文