毕业设计(论文)基于Android的消灭星星游戏的设计与实现.doc

上传人:laozhun 文档编号:2394297 上传时间:2023-02-17 格式:DOC 页数:35 大小:2.64MB
返回 下载 相关 举报
毕业设计(论文)基于Android的消灭星星游戏的设计与实现.doc_第1页
第1页 / 共35页
毕业设计(论文)基于Android的消灭星星游戏的设计与实现.doc_第2页
第2页 / 共35页
毕业设计(论文)基于Android的消灭星星游戏的设计与实现.doc_第3页
第3页 / 共35页
毕业设计(论文)基于Android的消灭星星游戏的设计与实现.doc_第4页
第4页 / 共35页
毕业设计(论文)基于Android的消灭星星游戏的设计与实现.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《毕业设计(论文)基于Android的消灭星星游戏的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于Android的消灭星星游戏的设计与实现.doc(35页珍藏版)》请在三一办公上搜索。

1、基于Android的消灭星星游戏的设计与实现专 业:软件工程 学 号:201110414325学 生:朱林 指导教师:聂莉莎摘要:当今社会IT技术发展越来越快。随着3G 时代到来,通过移动终端与网络互联来获取网络资源越来越受到人们欢迎,并且Android播放器是近年来Android平台上非常流行的音乐播放软件,本文目的就是提供一款Android系统上的能满足用户在线收听和下载音乐需求的音乐播放器应用程序。为了能满足用户的需求,音乐播放器最终采用了Android开源多媒体应用技术,使用Android系统自带的SQLite数据库支撑音乐列表的存储,利用Java语言、SDK和Eclipse开发工具对

2、播放器进行编码实现。最终设计出的音乐播放器具有播放、暂停、上一曲、下一曲、音乐列表、喜爱列表播放、在线音乐搜索、搜索结果音乐收听和下载等功能,能够满足用户收听音乐的需求。关键词:音乐播放器;Android;Java;SQLiteDesign and Implementation of Music PlayerBased on AndroidSpecialty:Software Engineering Student Number:200810414412Student:Yang ChengLiang Supervisor:Nie LiShaAbstract: In nowadays socie

3、ty, IT technology develops more and more fast. With the coming of the 3G era, the way to access to network resources through mobile terminals and internet becomes increasingly welcomed by the people and Android player is the popular music player software on Android platform in recent years. This the

4、sis aims to provide a music player application, which meets the demand of users to listen to and download music on Android system.To meet the demand of users, Android application technology of open source multimedia and SQLite database that supports storage of music list and comes with Android, Java

5、, SDK and Eclipse will be utilized in the implementation of music player. Finally, the music player can meet the demand of users to listen to the music and has the following functions: play, pause, last music, next music, music list and favorite music list, search music online and online listen to a

6、nd download music, etc. Key words: music player; Android; Java; SQLite目 录绪 论11 系统需求分析31.1 功能需求31.1.1 播放器的基本控制需求31.1.2 播放列表管理需求31.1.3 播放器的在线搜歌需求41.2 游戏UI需求51.3 游戏性能需求51.4 运行环境需求62 系统的设计62.1 系统业务流程62.2 功能模块的设计93 系统的实现113.1 系统开发环境113.2 系统架构的实现113.3 项目目录结构113.4 UI设计123.4.1 主界面133.4.2 音乐列表界面143.4.3 在线搜索界

7、面153.4.4 音乐播放界面173.5 功能模块的实现183.5.1 Android的媒体播放原理183.5.2 音乐管理模块183.5.3 在线搜索模块223.5.4 播放列表模块253.5.5 音乐播放模块274 相关技术概述304.1 Java304.2 Android平台及开发技术304.2.1 Android 基本框架(Android Architecture)304.2.2 Android应用开发技术API32结 论33参考文献34致 谢36绪 论一、开发背景及意义随着国家的强大,人们温饱问题的解决,视听娱乐已经成为人们生活的基本需求。人们往往喜欢在工作之余听听音乐来放松自己。但

8、是移动终端用户听音乐的方式不尽相同:有的用户喜欢把音乐下载到终端离线收听,有的用户却喜欢通过网络找喜欢的音乐并在线听等。随着开放式的Android平台的出现及其发展,3G网络的普及,目前的软件技术已经完全能够满足移动终端用户听音乐的需求。现在拥有Android终端的用户也是越来越多,随处可见用Android终端听歌的用户。虽然Android智能手机播放音乐不能与专业的音响相比,但经过一定的调校,再配合一定级别的耳机,智能手机终端所带来的听感也可以满足很多主流用户的耳朵。对于用智能手机听音乐,已经不是硬件决定优劣,而关键在于软件方面。众所周知,pc端音乐播放器已经相当成熟,无论离线还是在线都已经

9、不是问题,但是它有一个缺陷不方便携带,而手机终端却恰恰具有这方面的优势,因此,用移动终端听音乐已经越来越受欢迎。因此,研究支持Android移动设备操作系统上的音乐播放器能满足绝大多数终端用户的需求,使用户对音乐播放有更方便更友好的体验。二、国内外研究现状众所周知,Linux平台是一个完全开源的平台,由于Android的平台也是基于Linux的一个移动终端平台,谷歌公司也使Android成为一个开源的平台。开源平台终究要比封闭的平台发展要快,如,Linux系统就比windows系统要快。因此,Android平台的应用也比iPhone的应用要多,更新要快。可见在这样的一个开源平台上,有很多音乐播

10、放器。国外有不少基于Android平台的音乐播放器,其中,雅虎在美国推出的 MP3 播放器应用 Play by Yahoo! Music 就是一款很不错的Android音乐播放器,这款播放器有四个特征:1.能够识别歌曲ID、自动获取专辑封面、在手机上播放你整个音乐库,2.可以一边听歌曲,一边获取艺术家的最新消息。3.智能随机播放,雅虎可以学习你的音乐品味和定制习惯,为你定制个性化的播放列表。4.社会共享,即能够将自己喜爱的歌曲通过 Facebook 和 Twitter 分享给好友。另外,谷歌公司举行Android引用开发大赛,其中获奖的一款音乐播放器是TuneWiki Social Media

11、 Player,该播放器有一个强大的歌词库,主要是可以边听音乐边瞅歌词。国内各大音乐网站提供商都推出了自己的播放器的Android版本,如腾讯的QQ音乐播放器、百度公司的百度播放器、酷狗音乐的酷狗播放器、天天动听播放器、千千静音播放器等。这些Android版本的播放器都具有以上说到的在线音乐播放等功能。世界人口之多,移动终端用户的数量也是有增无减,用户对音乐播放器的功能需求是无止境的。再优秀的播放器都有不足之处,但是,能获取终端用户信赖的音乐播放器都是有其独特的一面。比如pc端的 Foobar2000播放器,就是公认的播放音质最好界面却很差的一款播放器。由此可以推测,优秀音乐播放就应该向着优化

12、其突出特点的方向发展下去。三、主要研究内容本文研究基于Android平台的音乐播放器,该播放器不仅能播放移动终端本地的音乐文件,同时只要用户的Android设备接入网络,就能在线查询播放百度音乐服务器上的音乐文件,实现在线收听音乐。基于此,本系统主要研究实现能够在线收查询收听服务器端的音乐、管理存储设备中的音乐文件、控制播放音乐文件以及显示音乐歌词的音乐播放器。音乐播放器的最基本的功能是控制音乐播放,只需要其它模块提供音乐文件的路径,就能播放该路径下的音乐,并且能够暂停播放音乐、播放下一首音乐、播放上一首音乐以及快进快退。对本地音乐的管理主要是能够扫描本地音乐、列表显示本地音乐以及删除指定音乐

13、。在线查询收听服务器中的音乐主要是让用户能够根据歌曲名搜索服务器中的音乐,对搜索结果中的音乐进行收听而不必将音乐存储到本地存储设备中。音乐播放器能够根据用户的需要显示或者不显示当前播放的音乐的歌词。如果存储设备中有当前播放音乐的歌词文件,音乐播放器就能够加载并显示歌词,否则在联网的情况下,音乐播放器就会在服务器中搜索歌词文件,下载并显示歌词。另外,本文研究的音乐播放器,能够让用户选择是否允许音乐播放器联网。倘若,用户能够使用的数据流量少,用户就可以禁止音乐播放器在播放过程中产生数据流量。1 系统需求分析本章主要分析消灭星星游戏的需求,包括功能需求、界面需求、以及性能需求三部分内容。1.1 功能

14、需求功能需求需再考虑清楚,下面1.1.1、1.1.2、1.1.3内容需要稍后做修改。根据项目的目标得到项目游戏的基本需求,以下从不同的角度描述该游戏的需求,并且使用用例图来描述,该游戏的功能需求分为三部分来概括,即播放器的基本、播放列表管理需求、播放器的在线搜歌需求。根据音乐播放器的功能设计,UML用例图更直观的反映了用户对该软件的需求。1.1.1 播放器的基本控制需求下面通过播放用例图来分析播放器的基本控制需求。如图1-1所示,播放器的基本控制需求有暂停/播放、上一首、下一首、歌词显示、进入播放列表、进入在线音乐搜索界面。图 11 播放器的播放控制用例图根据播放哪个区的播放控制用例图可知,用

15、户可以播放在在播放列表中选中的音乐,可以暂停正在播放的音乐,可以播放列表中当前播放的音乐的前一首音乐,可以播放列表中当前播放的音乐的后一首音乐,甚至可以切换到播放列表界面和在线音乐搜索界面。1.1.2 播放列表管理需求以下通过列表用例图分析播放列表管理的需求。图 12 列表用例图如图1-2所示,该图显示播放列表管理包括对列表的管理和对音乐的管理两部分需求。其中列表管理是针对用户自定义的列表进行管理,即对用户自定义列表的增加、删除和选择,而对音乐的管理则是针对列表中的音乐进行操作,主要包括选择、添加到喜爱列表、播放、删除和移动。即用户可以新建的自己的播放列表,可以删除自建的列表,可以进入新建的播

16、放列表,可以在选择音乐列表中的音乐,可以将选定的音乐添加到我的最爱列表中,可以删除列表中的音乐文件,可以将本地音乐列表中的音乐移动到自建的播放列表中以及可以播放音乐列表中的音乐。1.1.3 播放器的在线搜歌需求通过在线音乐用例图能够很好的反映用户对播放器的在线搜歌需求。如图1-3所示,该播放器能满足用户四个功能需求,包括根据歌曲名称在线搜索音乐、在线收听搜索到的音乐、把搜索到的音乐下载到本地以及对该播放器的联网进行控制。图13 在线搜索音乐用例图根据在线搜索音乐用例图可知,用户可以设置是否允许音乐播放器联网,能够在线搜索音乐,可以收听搜索结果中的音乐,也能够把搜索结果列表中的音乐下载到本地。1

17、.2 游戏UI需求软件界面就是指软件中面向操作者而专门设计的用于操作使用及反馈信息的指令部分。优秀的软件界面有简便易用,突出重点,容错高等特点。尤其是在游戏APP中,如果说优秀的游戏界面设计直接决定了游戏的成功,这也是不为过的。因为一款APP首先呈现在用户眼前的就是界面,游戏界面承载了用户与APP的交互任务,优秀的设计能让用户在玩游戏的同时获得视觉上的享受与身心的放松。因此,游戏界面要求布局合理,颜色舒适,控制按钮友好,便于用户操作。1.3 游戏性能需求根据Android手机系统要求无响应时间为5秒,如果超过5秒主界面无响应就会产生ANR(Application Not Responding)

18、,就会在界面上弹出ANR提示框;另外,一款优秀的游戏不应该有卡顿现象。以上两点也应符合之前“游戏UI需求”所提原则。所以就有如下性能要求:1) 当要求歌曲播放时,程序响应时间最长不能超过5秒2) 当要求歌曲暂停时,程序响应时间最长不能超过5秒3) 当要求歌曲停止时,程序响应时间最长不能超过5秒4) 当要求歌曲上/下一首时,程序响应时间最长不能超过5秒5) 当要求进行清单列表时,程序响应时间最长不能超过5秒待修改1.4 运行环境需求操作系统:Android移动设备基于Linux内核的Android操作系统或由某些OEM厂商基于Android操作系统定制的自家操作系统,如小米MIUI、魅族Flym

19、e、华为EMUI和中兴MifavorUI等等。支持环境: 系统最低版本:Android 2.3 系统最高版本:Android4.4.42 系统的设计本章主要介绍了系统的业务流程和功能模块的设计。系统设计应该遵循五条原则,分别是阶段性原则、易用性原则、业务完整性原则、业务规范化原则以及可扩展性原则。2.1 业务流程的设计消灭星星游戏的业务流程如图2-1所示。还需要完善图 2-1 游戏流程图根据游戏的流程图,启动游戏时,首先进入的是游戏主菜单界面,如下图1:图1前期版本菜单界面设定比较简单。进入菜单界面会播放背景音乐,欢快的背景音乐会给用户来一次预热,充分调动用户的兴趣,给用户接下来的游戏之旅奠定

20、一个轻松,愉快的氛围。另外,主菜单界面有一个开始“新游戏”的按钮。用户点击按钮,即进入到游戏主界面。并伴随有“ready go”的加油背景音,让用户通关信心大增。在游戏主界面,如下图2所示:图2主界面的下半部分是10*10的星星矩阵,每颗星星的颜色在“红、紫、蓝、黄、绿”五种颜色中随机给出。上半部分是游戏信息显示界面,包括“关卡、目标分数、得分以及一次消除数颗星星的庆祝信息”等等。除此之外,游戏主界面也有可爱,欢快的背景音乐。在游戏主界面点击某一颗星星,如果该星星周围有2颗或以上相同颜色星星的时候,系统会自动将其标记,并伴有提示音。如下图3所示:图3图中左下角四颗绿色星星周围有一圈白色的外发光

21、,这就是选中标记。此时,如果用户再次点击这四颗选中星星中任意一颗,就会将其消除,然后其上方的星星自动掉下补空,得分信息即会在上方显示。如下图4所示;如果用户点击其他未标记星星,则会将之前标记星星置为未标记状态。同时,点击星星如果满足标记条件(周围有相同颜色星星),则会将其标记,如下图5所示。 图4 图5 待添加死局和过关等死局和过关弄好了弄好了2.2 游戏场景的设计在业务流程图中已经详细介绍了消灭星星游戏的业务流程,根据流程做如图2-2所示的游戏场景设计。 图2-2 游戏场景设计根据消灭星星游戏的场景设计图,把游戏分为主菜单场景、游戏主场景和游戏结束场景三大场景。主菜单场景中有开始按钮和游戏背

22、景音乐,在前期版本中,主菜单场景设计较为简单。其中开始按钮点击后跳到游戏主场景,即开始游戏;游戏背景音乐为循环播放,一款游戏想要获得成功,音效起着至关重要的作用,它能够让玩家置身于游戏氛围之中,为用户开始游戏增添欢快气氛。游戏主场景包括星星矩阵、信息面板、背景音乐以及庆祝信息等四大部分。其中,星星矩阵、游戏背景音乐和信息面板是在游戏一开始就呈现出来的。整个手机屏幕被一分为二,上半部分为信息显示面板。面板的顶部包含当前关卡信息、当前关卡过关分数要求和当前得分,中下部暂时为空白,稍后将显示庆祝信息;屏幕下半部分为星星矩阵,进入游戏主场景时,星星矩阵中的星星会随机在不同颜色之间切换,初始化完成之后,

23、矩阵中星星定格在某一个颜色,星星矩阵初始化完成。用户此时就可以开始游戏了。与此同时,背景音乐初始化完成,开始播放背景音乐。背景音乐为欢快的童声,让用户在游戏的同时,身心得到放松。用户玩游戏时,如果一次消除星星超过10颗,庆祝信息就会弹出“赞”;如果一次消除超过15颗,庆祝信息会弹出“牛逼”;如果一次消除超过20颗,庆祝信息就会弹出“叼炸天”。每次弹出庆祝信息时,会根据信息不同播放相应的喝彩声。这也给用户以极大的鼓舞,增加用户兴趣。游戏结束场景,如果用户某一局到达死局时,得分未达到本局得分要求,即进入游戏结束场景。游戏结束场景中设有两个按钮,一个是重新开始游戏,一个是退出游戏。3 系统的实现本章

24、主要介绍消灭星星游戏的实现过程,包括系统开发环境的搭建、UI设计和功能模块的实现。3.1 系统开发环境任何平台应用程序都要有它的开发运行环境,Android应用程序开发也需要有它的特定开发环境才能够进行,下面介绍该项目开发时所需的Android开发环境配置.搭建开发环境需要的软件:1)操作系统:Windows XP或Windows7或Linux2)软件包:Android SDK(Software Development kit Java Development kit)、ADT(Android Development Tool)3)IDE环境:Eclipse IDE+ADT Eclipse3.

25、3以上4)JDK:Java Runtime Environment虚拟机 、(JDK1.8)Java Development kit3.2 LGame引擎该项目基于Android平台,使用LGame(Loon)游戏引擎开发完成。LGame引擎是一款基于Java技术的,能够以非常简单的编码方式,满足常规2D/3D游戏开发的跨平台游戏引擎。下面介绍LGame游戏引擎。3.2.1 LGame简介LGame是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本(测试版添加了C#开发版本,最新版LGame for Unity也即将加入)。引擎最新版本为0.4.1,作者将其部署到

26、了Github上,地址为。该项目只用到其Android部分,其底 层绘图器LGrpaphics封装有J2SE以及J2ME提供的全部Graphics API(PC版采用Graphics2D封装,Android版采用Canvas模拟实现),所以能够将J2SE或J2ME开发经验直接套用其中,两版本 间主要代码能够相互移植。Android版内置有Admob接口,可以不必配置XML直接硬编码Admob广告信息。这也为游戏后期加入广告提供了非常方便的接口。该引擎除了基本的音效、图形、物理、精灵等常用组件以外,也内置有Ioc、xml、http等常用Java组件的封装,代价是jar体积较为庞大,PC版 已突破

27、1.2MB,Android版有所简化也在500KB左右。此外,该引擎还内置有按照1:1实现的J2ME精灵类及相关组件,可以将绝大多数 J2ME游戏平移到Android或PC版中。3.2.2 LGame特点LGame同时也是是一个高通用性的游戏框架,作为支持Java桌面游戏以及网页游戏开发的全功能引擎,LGame无论对画面绘制、精灵碰撞、特效渲染、窗体组件,还是XML操作,文本数据库操作,HTTP操作,日志操作等都提供有完善的内部解决方案,避免了多包配置的繁琐与不便,同时也降低了用户的学习曲线。出于效率与程序体积两方面考虑,LGame中所有组件皆不依赖Swing,完全采取AWT绘制而成,因此它可

28、以将自身的运行环境压缩到最小,一个压缩后不足4MB的精简JRE,已足够支持它的运行,也就是与RMXP或吉里吉里2的运行库大小相仿佛,但功能却更多。3.2.3 LGame组件LGame引擎提供了非常丰富的组件供开发者选择,如果开发者熟悉JavaSE或者JavaME的话,可以直接使用其GLEx渲染接口,也可使用ponent包下的组件堆砌出开发者想要的场景,而loon.action.sprite.node包下则是仿cocos2d-x结构的组件,如果开发者熟悉cocos2d-x,那上手LGame引擎则是非常轻松的。另外,还有loon.action.sprite.painting包,该包下边则是仿XNA

29、结构的组件了。丰富的组件系统给了开发者很灵活的选择空间。而此次消灭星星游戏项目使用的则是component包下的组件来堆砌出星星矩阵,组件下边的Actor对象即充当了一般意义上的游戏精灵(sprite)对象。在此次项目中,游戏的按钮、星星还有庆祝信息都是actor对象,游戏信息,如得分、关卡等则是使用LTextArea对象,最后全部调用layer对象的add(Component)方法将其显示在游戏场景中。3.3 系统架构的实现本次Android消灭星星游戏采用的MVC架构,其中各个场景(screen)等为视图,星星(star)对象为模型,Algorithm算法类是控制器。视图是用户看到并与之交

30、互的界面,在Android移动设备上,一个界面就是一个Activity,由于该项目采用的是LGame游戏引擎,故该项目只有一个Activity,在此基础上扩展出了若干场景(screen),因此该游戏最后与用户交互的是screen而非Activity,用户可以通过screen与游戏进行交互,满足玩家对星星的操作需求。模型表示企业数据和业务规则,模型与数据格式无关,这样一个模型能为多个视图提供数据。在Android移动设备上,一般是使用SQLite为多个Activity提供数据,但是,消灭星星游戏并没有涉及到过多的数据存储业务。所以,该项目并没有采用SQLite作为项目的模型层存储数据,而是使用S

31、tar星星对象,借助Android平台上一个轻量级的存储类SharedPreferences进行少量的游戏数据存储。从而达到模型层的效果。传统意义上的控制器接受用户的输入并调用模型和视图去完成用户的需求。在本项目中,将控制器稍微转变了一下。Algorithm类直接充当了控制器的作用,Algorithm在项目中本来是算法类,其中包含了星星初始化、星星遍历、星星消除、星星补空、得分、死局判定等一系列该游戏主要算法。故从某种意义上来说,Algorithm类客串了控制器,在游戏运行时,接收用户的点击输入事件,处理完成之后返回到视图层,呈现给玩家。 3.4 项目目录结构按照功能的需要,以及在开发过程中,

32、都会按照某个结构来管理项目文件。项目的目录结构如图3-1所示:将资源文件与代码文件分开管理,根据代码功能的不同,将代码放在不同的文件夹中。图31 项目结构构图在进行Android项目的开发时,src文件包中存放的都是项目执行代码文件,一般情况下,项目的布局文件和资源文件都是放在res文件夹下的。但是在该项目为游戏开发,使用LGame游戏引擎,并没有Android传统意义上的布局界面。该项目中所有的布局工作都不依赖xml文件,全由代码动态布局。另外由于需要对资源文件划分子目录存放,而res文件夹下的drawable文件夹并不满足,最终选择了assets文件夹来存放资源文件。在这个文件夹下可以看到

33、,将资源文件分成了background、button、music、stars几种类别。 在图3-1中,com.zhulin.algorithm文件夹中存放的是项目的控制器Algorithm(算法)类,该类控制了整个游戏的流程,是该项目的核心。com.zhulin.listener_interface文件夹中存放的是一个接口类,该接口定义了星星(Star)类的两个抽象点击方法,一是星星选中点击onSelectClick(Star star),一是星星的消除点击onPopClick(Star star),这两个点击方法最终在星星(Star)对象调用setClickListener(MyClickL

34、istener listener)时被实现,从而实现了点击方法的回调。这是一个类似Android控件点击方法的写法,如Button的点击方法也需要调用其setOnClickListener(OnClickListener listener)方法,并在传入listener参数时将其实现并重写其中onClick(View v)方法。com.zhulin.popstar文件夹中存放的是整个项目的入口文件,即上述视图层中提到的Activity,该类继承LGame,对游戏做若干全局设置之后直接跳到游戏主菜单场景,并不呈现给玩家。com.zhulin.screens文件夹中存放的才是真正的该项目视图层文件

35、,其中包含了游戏的各个场景。com.zhulin.stars文件夹中存放的是游戏的精灵(sprite)文件,在该项目中即星星类。在资源文件assets包下,background文件夹下存放的是游戏的背景图资源,展开可以看到有主菜单场景背景图、游戏主场景背景图和三个庆祝背景图。button文件夹下边存放的是一些按钮图标。music文件夹下则是存放了该项目所有的背景音乐和效果音乐文件。stars文件夹下边存放的是该游戏的精灵(sprites)星星,展开可以看到有不同颜色的星星,还有其对应的选中状态。另外,在assets根目录下边还存放了一个map.txt文件,用来初始化游戏主场景中背景瓦片地图。3

36、.5 UI设计UI设计应该遵循简易型、用户语言、记忆负担最小化、一致性、清楚、用户的熟悉程度、排列、安全性、灵活性和人性化等11条原则。满足原则越多的UI设计就是越好的设计。Android常规的每一个可视化界面,都有其的唯一的布局配置文件,该文件里面有各种布局方式,和各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对各配置文件进行读取。这样就可以形成不同的可视化界面和炫丽的效果。由于该项目使用LGame游戏引擎,引擎中游戏界面的呈现是用Screen来呈现的,故该项目并没有XML相关布局文件,游戏界面全由代码动态布局。下面通过相关开发截图来介绍游戏主菜单场景和游戏主场景两个最主要

37、的场景的设计。3.5.1 主菜单场景主菜单场景就是游戏启动后呈现给玩家的第一个界面,然而在代码运行时其实是首先进入一个MainActivity的,不过这个Activity继承了LGame类。下面请看相关代码,如图:Figure 1可以看到,该Activity里边其实只是对整个游戏环境做一个初步设定。其中,setting.landscape = false;设置手机竖屏锁定;设置宽高为480*800;设置动画帧率为60FPS,并且不显示帧率信息(在开发阶段改信息是需要显示的,这能帮助开发者评判游戏是否画面流畅,是否有卡顿,需要调整优化);设置不显示LGame的Logo;最后将整个设置信息注册到W

38、elcomeScreen,即游戏主菜单场景。在主菜单场景中,由于考虑到游戏的流畅行、连贯性和用户体验度,首先设置进入动画为无,如图:Figure 2进入主菜单场景时,Lgame引擎会自动调用该方法。该方法返回对象即表示进入主菜单场景时将动画取消。另外,在主菜单场景中,由于前期功能需求较少,设计也是非常简洁:一张背景图,一个开始游戏按钮和用以衬托游戏气氛,增加玩家乐趣的背景音乐。如图:Figure 3如图,最底层是背景图片,开始新游戏按钮“新游戏”则显示在屏幕的中间位置。在后续的版本中,扩展出的其他功能按钮即依次排列在“新游戏”按钮下边。另外,进入主菜单场景后,后台即开始循环播放背景音乐,欢快的

39、背景音乐让玩家得到放松,营造了一个轻松、快乐的氛围,有助于玩家取得高分,增加游戏乐趣。玩家点击“新游戏”按钮即进入到游戏主场景。3.5.2 游戏主场景游戏主场景即玩家游戏的主要场景,该场景的布局和UI设计也是极为重要。如果说前边游戏主菜单场景是表面的话,那这应该就是里子了。表面固然重要,这是呈现给玩家的第一印象。但是里子更重要,因为这是一款游戏的中心所在,游戏的根基在这里。玩家对一款游戏的大多数体验都从这里获得,所以游戏主场景的UI设计应该尽可能的满足之前提到的11条原则。游戏主场景主要由3部分构成:一是背景,而背景又包含背景图片和背景音乐。背景图片如图:Figure 4在夜晚的城市上空,是满

40、天繁星。星星点缀的夜晚更加深邃,更加让人向往。一闪一闪的星星也让人更有想要点击的欲望,正好与该项目游戏契合。背景音乐选择使用之前由腾讯推出的,风靡一时的消除类游戏天天爱消除的背景音乐。音乐是由一群孩子哼唱的,如果玩家是儿童,他们能很快找到共鸣;如果玩家是成年人,能唤醒其内心的童真。所以无论是何年龄段的玩家都能够从这背景音乐中体会到乐趣,能达到这一点,那背景音乐的选择都是很成功的。游戏主场景分为两部分,一部分是用来装载星星矩阵的layer,一部分是用来显示游戏信息的infoLayer。如图:Figure 5如图中所示:上半部分infoLayer用来显示游戏信息。在infoLayer中,左上角显示

41、的是游戏当前关卡,用户每通过一关,关卡信息会自动加1。关卡信息右边显示的则是当前关卡的目标得分,即玩家在这一关卡必须达到该分数,否则游戏结束,场景切换到主菜单场景。目标得分右边显示的则是玩家当前得分情况,玩家可以随时在infoLayer中查看到当前游戏信息。另外,在infoLayer中,如果玩家一次性消除星星超过(包含)10颗,会在ComboInfo位置弹出“赞”庆祝信息,如图123,如果一次性消除星星超过(包含)15颗,则会弹出“牛逼”庆祝信息,如图124,如果一次消除星星大于等于20颗,则会弹出“叼炸天”庆祝信息,如图125。Figure 6 Figure 7 Figure 8在Layer

42、中会布满10*10的星星矩阵,如图:Figure 9星星资源的选择标准为视觉第一,由于五角星的棱角分明,容易造成玩家的视觉疲劳。所以,星星资源设计成了稍显圆润的造型。此外,星星颜色的选择上也是以容易区分、柔和和照顾色弱人群为导向的。如图可以看到,一共有红、黄、蓝、绿、紫五种颜色。最终,游戏主场景整个UI设计完成,如图:Figure 103.6 主要功能的实现3.6.1 实现原理该游戏基于Android平台,使用LGame游戏引擎实现的2D消除类休闲小游戏。Android平台为游戏提供最基础的运行开发环境,LGame游戏引擎为开发者封装了便于开发者实现的相关功能,二者相辅相成,共同作用,最终实现

43、该项目。3.6.2 星星布局及初始化在LGame游戏引擎中,ponent包中的组件主要采用add(component)方法为游戏场景添加组件。对于星星的布局,首先则是在Screen中添加layer,如图:在继承Screen的MainScreen中重写onLoad()方法,代码逐句执行结果为:设置背景,获取星星边长,初始化layer用于装载星星,初始化infoLayer,并且设置infoLayer中组件不能拖动,add(infoLayer)将其加入到Screen中。然后设置layer中组件也不能拖动,设置layer透明度为0.2,实例化大小为星星大小的瓦片地图并作用于layer上。设置并播放背景

44、音乐。最后将layer层添加到Screen中。Layer添加到Screen之后,将星星添加到layer中即可。如图:在initialStars()方法中,实例化一个10*10的二位星星数组。然后用两层for循环,逐个初始化星星并调用layer.addObject(starMatrixrawcolumn)方法将每一个星星都加入到layer层中。这里有最重要的一点,需要设置每一颗星星的点击监听,将监听器作为参数传递过去,并实现监听器接口MyClickListener中的两个抽象方法:onSelectClick(Star star)和onPopClick(Star star)。这两个方法分别对应星星

45、的选中点击事件和消除点击事件。3.6.3 星星点击选中从上面的说明中可以知道,星星的点击选中是从星星的监听回调onSelectClick(Star star)方法中发起的。下面先介绍这个监听的实现过程:首先,在项目com.zhulin.listener_interface包中建了一个接口类MyClickListener,如图:接口中定义了两个抽象方法,分别对应上述星星选中点击方法和星星消除点击方法。然后在星星类中的setClickListener(MyClickListener listener)方法中将其实例化,最后在重写的upClick(int x, int y)中根据是否已选中来判断调用

46、哪一个方法。如图:这里需要注意的是,如果星星没有调用setClickListerer(MyClickListener listener)方法的话,可以看到myClickListener是不能初始化的,那么在点击星星的时候就可能会出现NullPointerException。那么即使是调用了setClickListerer(MyClickListener listener)方法,从参数可以看出,我们必须传第一个MyClickListener对象,由于MyClickListener为借口,所以实例化其对象的时候必须实现其抽象方法,这也就是为什么游戏主场景中会有点击回调的原因。星星类中有一个isSe

47、lected属性来记录该星星是否已被选中(点击)。当星星的点击回调设置好之后,点击之后的操作就需要从重写的抽象方法中来实现,如图:玩家之前点了一颗星星后,已经标记了其周围颜色相同的星星,如果玩家再次点击则会触发消除点击,如果玩家点击别的星星,那就是这种情况了。如果选中星星列表selectedList不为空的话,将选中星星demark,然后将选中列表置为null;现在递归检查星星的四周,如图:检查到如果和被点击星星颜色相同的话,那就加入选中列表selectedList,如果选中列表长度大于1,即证明有两颗以上的相同颜色星星,那么将其标记。否则,将星星状态置为初始状态。3.6.4 星星消除点击上述星星点击选中部分已经介绍了该项目星星点击的回调实现,星星的消除点击原理相同,只是回调方法有所不同。星星的消除点击回调则是重写onPopClick(Star star)方法。即星星的消除动作是从onPopClick(Star star)方法开始,如图:相关技术概述本章主要介绍与A

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号