收藏 分销(赏)

基于android的益智游戏的与实现.doc

上传人:天**** 文档编号:4900837 上传时间:2024-10-18 格式:DOC 页数:37 大小:1MB
下载 相关 举报
基于android的益智游戏的与实现.doc_第1页
第1页 / 共37页
基于android的益智游戏的与实现.doc_第2页
第2页 / 共37页
基于android的益智游戏的与实现.doc_第3页
第3页 / 共37页
基于android的益智游戏的与实现.doc_第4页
第4页 / 共37页
基于android的益智游戏的与实现.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、南阳理工学院本科生毕业设计(论文)基于Android的益智游戏的设计与实现Design and Research of Developmental game Based on Android总 计:毕业设计(论文) 31页表 格: 5个图 片: 14个基于Android的益智游戏的设计与实现南 阳 理 工 学 院 本 科 毕 业 设 计(论文)基于Android的益智游戏的设计与实现Design and Research of Developmental game Based on Android南阳理工学院Nanyang Institute of Technology毕业设计(论文)原创性声

2、明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解XX大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅

3、览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 基于Android的益智游戏的设计与实现软件工程 陈兵摘 要 在国内外,android的前景十分广阔,尤其是这个平台的游戏开发更是前途不可限量。1976年Gremlin平台推出了一款经典街机游戏Blockade, 21年后诺基亚基于这个创意推出了世界上第一款最受欢迎的手机游戏贪吃蛇从而开启了手机游戏发展之先河。发展到现在,3G手机游戏已经成为当今移动游戏领域的主流,Android作为这个时代的弄潮儿正以燎原之势蔓延开来。以仙剑为代表的手机RPG游戏已渐渐

4、退出舞台,现在老少皆宜的益智类游戏慢慢占据着主流,本论文研究的游戏正是这样一款游戏,Q版的游戏画面风格和简单易懂的操作适合于任何年龄段的玩家。航空帝国除采用Android平台的四大组件,涉及到自定义View中画图的一些方法和技巧是本游戏的重点,调用Android系统画图的API及自己实现的相应算法,再加上漂亮的图片足以实现几乎任何炫酷的效果。有人说任何一个智能手机用户都是一个潜在的游戏玩家,我想搭乘Android的顺风车,手机游戏开发必将大有作为。关键词 Android;手机游戏;3G;益智类游戏;老少皆宜;Design and Research of Developmental game B

5、ased on AndroidSoftware Engineering MajorChen BingAbstract: At home and abroad,the Android has broad prospects,especially in the platform game developers is limitless.In 1976 the Gremlin platform launched a classic arcade game based on the Nokia Blockade,21 creative has launched the worlds first and

6、 most popular mobile phone game Snake,thereby opening the mobile phone game development of precedent.Until now,3G mobile phone games have become todays mobile phone game of the mainstream,Android as the era of beach-goers must borrow wind smooth bright.In “the immortal sword” as the representative o

7、f the mobile phone RPG game has gradually quit the stage,now occupying the main puzzle game slowly,this paper studies the game is just a game,Q version of the game screen style and simple and easy operation is stuitable for any age game player. Empire in addition to the Android platform air four com

8、ponents, involve custom View drawing some methods and techniques is the focus of the game, called Android system drawing of the API and realize the algorithm, combined with beautiful pictures to achieve virtually any cool effect. People say that any one of the intelligent mobile phone user is a pote

9、ntial game player, I want to take the Android ride, mobile phone game development will accomplish much.Key words: Mobile Phone Game;3G; Developmental game; yang and old;目 录1 绪论11.1 背景11.2 Android的崛起11.3 国内外研究现状21.4 项目研究的主要内容31.5 本章小结32 Android的开发环境32.1 Android操作系统32.2 Android开发环境32.3 Android开发环境变量的配

10、置32.3.1 JDK的配置32.3.2 SDK的配置52.4 Eclipse的配置52.5 本章小结63 Android应用程序核心63.1 应用程序基础63.2 应用程序组件73.2.1 Acitivity73.2.2 Service83.2.3 BroadcastReciver93.2.4 ContentProvider103.3 本章小结114 项目相关技术124.1 地图的滑动124.2 MusicPlayer134.3 本游戏的核心类GameEngine154.4 相关算法研究164.4.1 游戏资源进度的加载164.4.2 邮件分页显示效果的实现174.4.3 玩家排名列表的实现

11、184.4.4 碰撞检测184.4.5 按每行指定长度画字符串184.4.6 根据一串连续的数字图片,画出任何数字194.4.7 图片的翻转和缩放204.5 本章小结205 系统测试与运行效果截图215.1 选择方向界面215.2 游戏主界面215.2.1 人物信息225.2.2 音乐音效设置225.2.3 邮件列表225.2.4 照相235.2.5 商店信息235.2.6 飞机列表245.2.7 航班列表245.2.8 好友列表256 游戏基本数据256.1 飞机解锁数据256.2 建筑解锁数据266.3 机场解锁数据266.4 飞机所有数据27结束语29参考文献30致谢311 绪论1.1

12、背景3G(第三代数字通讯技术)正离我们的生活越来越近,它的到来必将掀起一阵无线通讯的新浪潮,3G是向未来个人通信演进的一个重要发展阶段,具有里程碑和划时代的意义。说到3G不能不谈到Android,1Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统。它包括一个操作系统,中间件和一些重要的应用程序。它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和Dalvik虚拟机,由C+开发。最上层是各种应用软件,包括通话程序,短信程序等,应

13、用软件则由各公司自行开发,以Java作为编写程序的一部分。不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。这里,可以把android看作是一个类似于windows的操作系统。学习android平台下的软件开发正如以前学习windows平台下的软件开发一样。1在国内,android的前景十分广阔,国内很多的厂商和运营商也纷纷加入了android阵营,包括中国移动,中国联通,华为通讯,联想等大企业。同时android应用的范围不仅仅在手机,国内一些厂家也陆续推出了采用android系统的MID产品,比较著名的包括由Rockchip和蓝魔推出的同时具备

14、高清播放和智能系统的音悦汇W7,我们可以预见android也将会被广泛应用在国产智能上网设备上,将进一步扩大Andorid系统的应用范围。1.2 Android的崛起【2】Android操作系统是Google最具杀伤力的武器之一。苹果以其天才的创新,使得iphone在全球迅速拥有了数百万忠实粉丝,而Android作为第一个完整的,开放,免费的手机平台,使开发者在为其开发程序时拥有更大的自由。与Windows,Symbian等厂商不同的是,Android操作系统免费向开发人员提供,这样可节省近三成的成本,得到了众多厂商和开发者的拥护。【2】最早进入Android市场的宏达已经陆续在一年内推出了G

15、1,Magic,Hero,Tatto等4款手机,三星也在2010年推出了Galaxyi7500,连摩托罗拉也推出了新款Android手机Cliq,中国移动也以Android为基础开发了Ophone平台。这些发展证明Android已成为只能手机市场的重要发展趋势。32010年是android平台飞速发展的一年。据报道显示,2011年8月Android已占据了全球智能手机市场的半壁江山;而作为世界上零售领域最庞大的智能手机卖家苹果公司,也以其iOS操作系统控制了五分之一的市场。换言之,Android和iOS加起来在全球智能手机市场上占据了三分之二的绝大多数市场份额。Android已经在智能手机操作

16、系统上占据着主导地位。这不难解释,毕竟这样一个完全免费并开放源代码的平台对于许多制造商来说都极具吸引力。包括HTC、Samsung、Acer、Sony Ericsson、LG、Motorola等等一系列厂商都对其投入了极大地关注和合作。3因此,2011年6月Google宣称其每天激活50万Android设备,我们对这一消息并不会感到十分吃惊。这一数据虽然也包括平板电脑在内,但即便是这样,它也仍然非常可观。它不仅仅显示了Android在制造商和消费者间的普及度,同时还标志着智能手机正在成为如今社会不可缺少的一部分。Andy是一个有远见的人,早在2003年他就看到了Android2005年的起步和

17、被Google的收购,也看到了系统的进步和新的机型的快速的发布。所有的这一切都让我们相信,Android走向世界第一移动操作系统的宝座的步伐是势不可挡的,Android可能真的会继续带着我们走向移动设备梦想的彼岸。1.3 国内外研究现状Android 包括操作系统、用户界面和应用程序 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google与开放手机联盟合作开发了 Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和 T-Mobile 在内的 30 多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次

18、的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。【4】Android 作为谷歌企业战略的重要组成部分,将进一步推进随时随地为每个人提供信息这一企业目标的实现。我们发现,全球为数众多的移动电话用户从未使用过任何基于 Android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。【4】开放手机联盟的成立和 Android 的推出是对现状的重大改变,在带来初步效

19、益之前,还需要不小的耐心和高昂的投入。但是,谷歌也在不断努力,让这些服务变得更好,同时也将添加更有吸引力的特性、应用和服务。1.4 项目研究的主要内容此游戏主要用到了Android用来画图的API,主类继承view类,重写其onDraw()方法并另起一个线程对主UI线程更新,实现整个游戏的动态效果。其中自己写了很多算法来实现一些炫酷的效果。游戏主体框架的构思,分为8大部分: com.hkdg.animation用来存放游戏中所用到的对ani动画的初始化及播放的类。 com.hkdg.game主要用来存放从服务器解析过来的数据,也包括读取的本地数据。 com.hkdg.game.Music用来存

20、放游戏中音乐,音效的初始化及播放的类。 com.hkdg.game.Object游戏中所用到的所有实体类存放在此。 com.hkdg.game.View游戏UI由若干自定义View组成,所有的View类存放于此。 com.hkdg.GameEngine此包中主要存放的是一个继承了View的类,它另起了一个线程用来绘制界面,并同时更新主UI线程。 com.hkdg.Main这是一个存放着几个Activity的包,游戏中为数不多的几个activity都存放于此。 com.hkdg.tools这是一个存放着工具类的工具包。1.5 本章小结本章主要对Android的发展历程以及对本游戏内容进行了简单的

21、阐述,为Android开发者提供一个参考。2 Android的开发环境2.1 Android操作系统目前只支持XP(32-bit)、Vista(32/64-bit)、Mac OS X 10.4.8或更新版本(x86),Linux(只在Linux Ubuntu Dapper Drake上面做过测试)。 系统XP sp2/sp3 32bit 来做讲解,其他系统的可以google一下差异,反正都大同小异的。2.2 Android开发环境建议使用eclipse进行开发,当然,eclipse版本要在3.3以上,这是官方说法,3.3以下我也没测过,3.3 (Europa)、3.4 (Ganymede) 都

22、可以java版本或者EE版本也都没问题的,可以到eclipse官方下载最新版本。因为开发是基于java的,所以jdk是少不了的,jdk要求是5.0或者6.0,我还是用5.0比较多,可以到sun官方下载。2.3 Android开发环境变量的配置2.3.1 JDK的配置首先要到sun官方下载jdk,注意的是下载jdk而不是下载jre,因为jre是提供java的运行环境而不是开发环境。sun官方网站是: 下载后安装是下的解压包那就解压到某目录,例如解压到是C:Program FilesJavajdk1.5.0_14 右键点击我的电脑 - 属性 - 高级,点击下面的环境变量,在下面的“系统变量”处选择

23、新建在变量名处输入 JAVA_HOME变量值中输入刚才的目录,比如C:Program FilesJavajdk1.5.0_14 。效果如图2-1所示:图2-3-1-1 进入环境变量确定后再新建一个变量名为classpath,变量值为 %JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar , 确定后找到PATH的变量,双击或点击编辑,在变量值最前面加上%JAVA_HOME%/bin; 注意里面的是,确定、确定、确定后即可。具体如下图2-2所示图2-3-1-2 环境变量的配置然后开始 - 运行 cmd,输入java或者javac看看有没有效果,如果出来一

24、大堆其它的东西,那就好了,如果出现类似xxx不是内部或者是外部命令之类的,那就说明你的设置有问题,看看那里出问题然后加以改正。2.3.2 SDK的配置因为我们要开发的android应用程序,所以下的sdk是Google那里下载,地址在 以后更新后估计地址会变,所以大家可以从 然后同样要设置环境变量,同jdk设置,新建一个SDK_HOME,值为D:SDKandroid-sdk-windows-1.5_r3android-sdk-windows-1.5_r3 ,然后找到path,在前面加上%SDK_HOME%tools; 就OK了。和jdk一样,我们也可以测试一下环境变量是否设置成功,cmd窗口中

25、输入android,出现一堆东西,就完成了。2.4 Eclipse的配置当然,以上都搞定后,还不能马上用eclipse开发android应用程序,还必须添加eclipse插件才行,幸好这步骤非常轻松,打开eclipse后,点击菜单栏的help - install new software. 然后点击Add会出来一个Add Site的窗口,这里Name输入android(自己取个就是了),location中输入插件的网络地址: https:/dl- DDMS 和 Android Development Tools都选中,finish就可以了,可能有段时间会去计算插件占用资源情况,慢慢等会。完成后

26、会提示重启eclipse来加载插件,ok重启,就可以用了。2.5 本章小结本章将主要介绍如何构建Android开发环境,包括获取Android SDK、Eclipse以及进行Android Eclipse插件设置等。3 Android应用程序核心3.1 应用程序基础Android的应用程序全部都是用Java编程语言所写的。编译后的Java代码包括应用程序要求的任何数据和资源文件,是通过aapt工具捆绑成一个Android包,归档文件是以.apk为后缀。这个文件是分发应用程序和安装到移动设备的中介或者是工具,用户下载这个文件到他们自己的设备上。一个.apk文件中的所有代码就会被认为是一个应用程序

27、。 aapt是Android Asset Packaging Tool的首写字母的缩写,这个工具包是含在SDK的tools/目录下的。查看、创建、更新与zip兼容的归档文件(zip、jar、apk)。它也能将资源文件编译成二进制包。 虽然你可能不会经常直接使用appt,但构建脚本(build scripts)和IDE插件会使用这个工具打包成apk文件,构成一个Android的应用程序。 下面是更详细的使用细节,5首先打开一个终端,进入tools/目录下,运行命令: Linux或Mac操作系统:./aapt ,如果是Windows:aapt.exe 。在这里注意的是:tools/目录指的是and

28、roid SDK目录下的/platforms/android-X/tools/。在很多的方面,每个Android的应用程序是生活在它自己的世界。默认的情况下,任何一个应用程序是运行在它自己的Linux进程中。而当应用程序中的任何代码需要被执行时候,Android将启动进程;当它不再需要和系统资源不会被其他应用程序所请求时,Android就会关闭这个进程。每一个应用程序都有自己的Java虚拟机(VM),所以应用程序的代码是独立于其他所有的应用程序代码的运行。在默认情况下,每一个应用程序分配一个唯一的Linux用户ID。权限被设置为每一个应用程序的文件仅对用户和应用程序自己本身可见。虽然有一些方法

29、也可以暴露他们给其他应用程序。也有可能的是设置两个应用程序共享一个用户ID,这种情况下,他们能够看到对方的文件。为了节省系统资源的占用,具有相同ID的应用程序最好可以安排在同一个Linux进程中,共享同一个VM。53.2 应用程序组件3.2.1 AcitivityActivity是Android组件中最基本也是最为常见的组件,在一个Android应用中,一个Activity通常就是一个单独的屏幕。当Activity从一种状态转变到另一种状态时,会调用以下保护方法来通知这种变化:void onCreate(Bundle savedInstanceState)void onStart()void

30、onRestart()void onResume()void onPause()void onStop()void onDestroy()【6】下图为Activity的生命周期图示:图3-2-1 Activity的生命周期图示6在实现 Activity 类的时候,通过覆盖( override )这些方法即可在你需要处理的时候来调用。onCreate :当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。onCreate 方法有一个参数,该参数可以为空( null ),也可以是之前调用onSaveInstanceState ()方法保存的状态信息。onStart :该方法的触发表

31、示所属活动将被展现给用户。onResume :当一个活动和用户发生交互的时候,触发该方法。onPause :当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。onStop :当一个活动不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发 onStop 方法。 所以保存状态信息是应该在onPause时做,而不是onStop时做。活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。因此对于开发者来说,在设计应用程序的时

32、候,必须时刻牢记这一原则。在一些情况下,onPause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。onRestart :当处于停止状态的活动需要再次展现给用户的时候,触发该方法。onDestroy :当活动销毁的时候,触发该方法。和onStop 方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。onSaveInstanceState :系统调用该方法,允许活动保存之前的状态,比如说在一串字符串中的光标所处的位置等。通常情况下,开发者不需要重写覆盖该方法,在默认的实现中,已经提供了自动保存活动所涉及到的用户界面组件的所有状态信息。3.2.2 Serv

33、iceService是一种长生命周期,没有用户界面的程序。Service是android 系统中的一种组件,它跟Activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service的启动有两种方式:context.startService()和context.bindService()。【7】使用context.startService() 启动Service是会经历:context.startService() -onCreate()- onStart()-Service running context.stopService() | -onDestro

34、y() -Service stop如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。 所以调用startService的生命周期为:onCreate - onStart(可多次调用) - onDest

35、roy 使用使用context.bindService()启动Service会经历: context.bindService()-onCreate()-onBind()-Service running onUnbind() -onDestroy() -Service stop onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind-onDestroy相应退出。所以调用bind

36、Service的生命周期为:onCreate - onBind(只一次,不可多次绑定) - onUnbind - onDestory。在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。service可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。【7】3.2.3 Broadc

37、astReciverBrodcastReciver是为了实现系统广播而提供的组件。在android下,要想接受广播信息,那么这个广播接收器就得我们自己来实现了,我们可以继承BroadcastReceiver,就可以有一个广播接受器了。有个接受器还不够,我们还得重写BroadcastReceiver里面的onReceiver方法,当来广播的时候我们要干什么,这就要我们自己来实现。具体的代码:public class SmsBroadCastReceiver extends BroadcastReceiver Override public void onReceive(Context conte

38、xt, Intent intent) Bundle bundle = intent.getExtras(); /这里写你要做的事情 我们可以把广播接收器注册到系统里面,可以让系统知道我们有个广播接收器。这里有两种,一种是代码动态注册:/生成广播处理 smsBroadCastReceiver = new SmsBroadCastReceiver(); /实例化过滤器并设置要过滤的广播 IntentFilter intentFilter = new IntentFilter(android.provider.Telephony.SMS_RECEIVED); /注册广播 BroadCastRecei

39、verActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter); /onDestroy要注销广播 调用unregisterReceiver(.)函数; 一种是在AndroidManifest.xml中配置广播 两种注册类型的区别是:1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。3.2.4 ContentProviderContentProvider可以实现不同组件之间的数据共享。ContentProvider:为存储

40、和获取数据提供统一的接口。可以在不同的应用程序之间共享数据。Android已经为常见的一些数据提供了默认的ContentProvider1、ContentProvider使用表的形式来组织数据 无论数据的来源是什么,ContentProvider都会认为是一种表,然后把数据组织成表格2、ContentProvider提供的方法 query:查询 insert:插入 update:更新 delete:删除 getType:得到数据类型 onCreate:创建数据时调用的回调函数3、每个ContentProvider都有一个公共的URI,这个URI用于表示这个ContentProvider所提供的

41、数据。Android所提供的ContentProvider都存放在android.provider包当中二、ContentProvider的内部原理自定义一个ContentProvider,来实现内部原理步骤:1、定义一个CONTENT_URI常量(里面的字符串必须是唯一)Public static final Uri CONTENT_URI = Uri.parse(content:/com.WangWeiDa.MyContentprovider);如果有子表,URI为:Public static final Uri CONTENT_URI = Uri.parse(content:/com.W

42、angWeiDa.MyContentProvider/users);2、定义一个类,继承ContentProviderPublic class MyContentProvider extends ContentProvider3、实现ContentProvider的所有方法(query、insert、update、delete、getType、onCreate)4、在AndroidMinifest.xml中进行声明 android:name=.cp.MyContentProvider android:authorities=com.WangWeiDa.cp.MyContentProvider /3.3 本章小结本章将会详细叙述Android的应用程序所包括的基本组件,还有这些组件之间的沟通方式Intent(除了Contentprovider),同时讲解一下Android应用程序的生命周期(Activity)这是其他智能收与Android手机平台最显著不同的地方。最后将介绍在Android的应用程序中如何利用下

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服