基于Android的传感器游戏真心话大冒险毕业设计_第1页
基于Android的传感器游戏真心话大冒险毕业设计_第2页
基于Android的传感器游戏真心话大冒险毕业设计_第3页
基于Android的传感器游戏真心话大冒险毕业设计_第4页
基于Android的传感器游戏真心话大冒险毕业设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、石家庄邮电职业技术学院毕业设计基于安卓的传感器游戏-真心话 大冒险摘 要近年来,随着3g移动互联网络的发展,智能手机的普及率越来越高,各种智能手机操作系统相继出现。基于android系统的手机游戏,是android应用软件中的最重要的组成部分,有着庞大的用户人群,也必将有巨大的发展潜力。有人已这样预言,android手机游戏将是游戏产业的下一个阶段,是手机游戏的未来。本文主要通过介绍一款基于android系统的物理传感器小游戏“真心话 大冒险”设计与开发过程,讲述了当前较为流行的智能手机传感器游戏在android系统中的实现过程及涉及的技术要点。此游戏为利用加速度传感器技术设计的一款“真心话

2、大冒险”小游戏,玩家通过对手机的摆动变换问题达到娱乐休闲的效果。目 录1 绪论11.1课题研究背景11.1.1手机游戏的发展11.1.2android手机游戏平台21.2课题研究意义31.2.1android手机平台的优势31.2.2android手机游戏的市场价值31.3国内外研究现状41.4本文主要内容及文章结构52android的相关技术介绍和分析52.1android概述52.2android操作系统特性62.3android操作系统框架结构72.3.1应用程序72.3.2应用程序框架72.3.3库与运行环境82.3.4内核83android的开发环境93.1系统开发的环境93.2ec

3、lipse简介93.3其他软件的简介103.4系统开发编程语言的简介114系统的详细设计124.1功能设计124.2设计思路134.3主要功能实现原理134.3.1传感器134.3.2传感器的调用和姿态计算144.3.3通过intent跳转到结果显示的activity154.3.4随机数的产生164.3.5结果的显示164.4界面的美化及特效174.4.1强制横屏174.4.2标题的走马灯特效174.4.3添加摇动声音和动画185总结195.1 封爱宇总结195.2 李靖总结19参考文献20ii1 绪论3g时代已经慢慢的融入了我们的日常生活,随着国家的通信政策以及各大运营商的宣传的影响,3g手

4、机已经随处可见,面对全球信息、技术空前高速发展,信息高速化发展更是社会进步的一个标志。在全球信息化的今天,手机已经成为人们日常生活中不可缺少的一部分,尤其是在电子产品日新月异的今天,我们在平时随处可见的电子产品中,手机无疑是一个最大的用户集,而各大厂商智能手机则依旧是电子市场的一颗耀眼的明星。其中的代表作有诺nokia的塞班系统,摩托罗拉的linux系统,但是其中异军突起的仍然是google的android系统以其开放的源代码和方便简洁的操作必然是未来智能手机领域的领头羊。1.1课题研究背景1.1.1手机游戏的发展 手机游戏(mobile game或wireless game),是指消费者利用

5、随身携带并具有无线网络联机功能的智能移动终端设备,能随时随地来进行的游戏。手机游戏最大的特点是其随时随地进行游戏的便利性。这些年来,手机游戏市场有了很大的发展,手机游戏已成为使用率最高的手机娱乐应用,占到各种手机娱乐应用比例的78.4%。在日本,手机游戏市场经历多年的稳定增长,市场规模已经超过了850亿日元。在美国,手机游戏作为美国手机用户最喜欢的移动应用之一,在iphone和android等智能终端推出后发展迅速。而在中国,根据易观智库产业数据库最新发布的2010年第4季度中国手机游戏市场季度监测数据显示,我国2010年手机游戏市场规模已达到30.5亿元,继续保持了较快的发展。通过图1.1,

6、我们能看出近些年来我国手机游戏市场的发展。 图1.1 近几年中国手机游戏市场规模的发展从上面的图可以看出,中国手机游戏的市场规模在近几年内一直保持了较快的发展,而且这几年的发展速度越来越快。1.1.2android手机游戏平台android是google于2007年11月5日宣布的基于linux平台的开源手机操作系统,号称是首个为移动终端打造的真正开放和完整的移动软件。自从google发布智能手机android操作系统平台(2008年9月首款android智能手机g1上市)以来,android平台一直以惊人速度挺进,并支持android智能手机迅速进入领先行列。android在全球智能手机市场

7、上的份额已从去年第五位(3.9%)跃进到现在的第二位(25.5%),今年3季android手机销量比去年同期增长1309%。国内外很多市场分析员一致认为,android到明年有望争得第一的位置(迄今android在北美、亚洲智能手机市场均已位居第一)。迄今android是智能手机市场上最大的赢家,是销售增长最快、最成功的竞争者。 游戏作为android平台最主要的应用,预示着随着android手机用户数量的增多,基于android平台的手机游戏在未来将有巨大的市场潜力,虽然现阶段在国内研究开发android手机游戏的人数并不多,但移动互联网业界的许多人士都对android手机游戏未来的发展表示

8、乐观态度,更有业界精英表示,android手机游戏是游戏产业的下一个阶段,也是手机游戏的未来。1.2课题研究意义 1.2.1android手机平台的优势 现在常见的智能手机平台有:symbian、windows mobile、blackberry、iphone ios等。android平台的优势主要体现在以下方面。 (1)开放性 android平台是开放性的平台,允许任何移动终端厂商加入到android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开放性对于android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消

9、费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。(2)丰富的硬件选择这一点还是与android平台的开放性相关。由于android的开放性,众多的厂商会推出千奇百怪,功能特色各异的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。例如你从诺基亚symbian风格手机一下改用苹果iphone,同时还可将symbian中优秀的软件带到iphone上使用、联系人等个人资料更是可以方便地转移。(3)开发手机软件不受任何限制 android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻扰

10、,可想而知,如此一来会有多少新颖别致的软件诞生。(4)无缝结合的google应用 如今叱咤互联网的google已经走过了10年度的历史。从搜索巨人到全面的互联网渗透,google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而android平台手机将无缝结合这些优秀的google服务。正因为android具有以上的优越性,所以2010年末数据显示,仅正式推出两年的android操作系统就将要超越称霸十年的诺基亚symbian os系统,使之跃居全球最受欢迎的智能手机平台。1.2.2android手机游戏的市场价值 随着计算机技术和移动通信技术的快速发展,手机用户的数量越来越多,用

11、户在挑选手机设备的时候己经不再拘泥于基本的通话功能。而新的技术从某种程度上提高了手机设备处理数据的能力,因而可以在手机上添加许多新的功能,以满足用户多样性需求。为此已经有越来越多的研发机构或部门着手研究开发手机应用软件。 手机游戏作为手机上的应用软件类型之一,更是深受广大用户的喜爱。由于手机硬件资源有限、屏幕小、游戏时间短等特点,使得手机很适合运行那些剧情简单、操作方便、有益于提高敏捷性和智力开发的游戏。 android平台上的游戏相比应用软件,不需要进行严格的市场细分,不需要针对目标用户量身定制。这是因为游戏玩家的核心需求是统一的,那就是:娱乐与打发时间(乃至更高层面的竞技需求和群体认同需求

12、),这种需求附着于特定的社会发展阶段,不受地域的限制,甚至于能够穿透文化壁垒。因此,绝大多数种类的游戏都具备传染性与普适性,每一个售出的游戏都将会点燃周围潜在玩家的激情,最终吞噬整个需求市场。由此可知,几乎每一个android手机用户都是游戏的需求者,都是潜在的顾客,现今的1000多万android用户不过是冰山一角,随着android手机市场进一步壮大,游戏的市场容量将具备更大的增长空间。综上所述,android平台相比其他智能手机平台有许多优势,这些优势使android发展迅速,而android游戏作为android手机最主要的应用,其市场价值有目共睹。1.3国内外研究现状 android

13、 是google开发的基于linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。google与开放手机联盟合作开发了 android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和 t-mobile 在内的 30 多家技术和无线应用的领军企业组成。google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。android 作为谷歌企业战略的重要组成部分,将进一步推进随时随地为每个人提供信息这一企

14、业目标的实现。我们发现,全球为数众多的移动电话用户从未使用过任何基于android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。 开放手机联盟的成立和 android 的推出是对现状的重大改变,在带来初步效益之前,还需要不小的耐心和高昂的投入。但是,我们认为全球移动用户从中能获得的潜在利益是值得付出这些努力的。谷歌将继续努力,让这些服务变得更好,同时也将添加更有吸引力的特性、应用和服务。1.4本文主要内容

15、及文章结构本文主要介绍了基于android移动设备的加速度传感器技术的应用。android平台的加速度传感器是android基于硬件的传感器,它能够有效的跟踪手机、电脑等移动设备的运动状况,在移动设备上应用普及,android平台的移动设备极少有不装加速度传感器的,这种加速度传感器目前已经成为移动应用不可分割的一部分。android加速度传感器具有检测移动设备在三维空间加速度的功能,可以通过知道移动设备的运动状态获取移动设备加速度传感器的参数,以此控制三维空间中移动设备运动的方式。2android的相关技术介绍和分析 2.1android概述android一词的本义指“机器人”,同时也是goo

16、gle于2007年11月5日宣布的基于linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。android从诞生到现在也不过几年的时间,但是也就是在这短短的几年内android创造了一个迅速被人们知晓并追捧的奇迹。2007年11月5日,google与其他33家手机制造商(包含摩托罗拉、宏达电、三星、lg)、手机晶片供应商、软硬体供应商、电信业者所联合组成的开放手持装置联盟(openhandsetalliance),发布了名为android的开放手机软硬体平台。该联盟的成员宣布日后都会在android平台上开

17、发他们的新的业务。不久之后的2008年9月24日,t-mobile公司首度公布第一台android手机(g1)的细节,同日google也放出了androidsdk1.0rc1。这样android进入了人们的视线。android以其特有的开放性优势越来越受到人们和智能手机厂商的关注。对于第三放软件开发商来说,android是一个真正意义上的开放性移动设备综合平台,android系统是免费向开发人员提供的,这样就避免了开发中专利权的障碍。因此,就能够为第三方软件开发商省下大笔资金。对于设备制造商来说,android是一个免费的平台。当设备制造商每制造一台手机时,那些支付给手机系统制造商的费用也省去

18、了,这样也降低了每台手机的生产费用,同时就降低了手机的价格,这样在市场上也提高了竞争力。对硬体开发厂商来说,android也是个开放的平台。使用android平台的厂商可以更具自己的需求以及能力为android开发具有该厂商特色的功能,但是这样的增加完全不用考虑版权的问题。同时android平台支持各种先进的网络、绘图、3d处理能力,可以用来提供更好的使用者体验。2.2android操作系统特性 android操作系统主要包括如下特性: 应用框架:用于开发可重用可替代的组件。 dalvik虚拟机:android采用的java虚拟机是自主开发的代号为dalvik的虚拟机,在保证api方面兼容的同

19、时dalvik针对移动手机进行了大幅优化,占用资源更小,运行效率更高。 集成的浏览器:基于开源的引擎webkit。 优化的图形:强大的自定义二维图形库。基于opengl es 1.0标准的3d图形功能,在移动3d开发中有着至关重要的地位。 sqlite数据库:sqlite提供结构化的数据存储。它是一款轻型免费的且开源的数据库,设计目标是嵌入式的。它具备占用资源低、需要的内存空间少、处理速度较快,并且还支持事务处理功能等优点。 多媒体支持:支持各种通用的音视频和静态图像格式(mpeg4、mp3、jpg、png、gif、aac、h.264、amr)。 gsm技术:(依赖硬件)global syst

20、em for mobile communications,全球移动通讯系统,俗称全球通,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。蓝牙,edge,3g,and wi-fi:(依赖硬件)蓝牙和wi-fi都是一种短距离的无线连接技术,在短距离内可以实现话音和数据的无线传输。edge(enhanced data rate for gsm evolution),是增强型数据速率gsm演进技术。 camera,gps,compass,and accelerometer:(依赖硬件)gps(global positioning syste

21、m),即全球定位系统。它是一个由覆盖全球的24颗卫星组成的卫星系统。compass是一个开放源代码的java搜索引擎框架。 强大的开发环境:包括一个设备模拟器,调试工具,内存和性能检测,以及eclipse ide的开发插件。eclipse是个集成开发环境。2.3android操作系统框架结构android作为一个开源的移动设备的平台,其软件层次结构自上而下分为四个层次,分别是:应用程序(application)、应用程序框架(application framework)、各种库(libraries)和android 运行环境(runtime)、linux内核(linux kernel)。图2-

22、1 google手机操作系统平台-android的架构模型2.3.1应用程序 突破传统思维,提供更好的用户体验。android将会移植一系列的核心应用,包括e-mail客户端,sms程序,日历,gps地图,浏览器,联系人等等。 所有的应用程序都是由java语言完成的。应用程序是无界限的,可以在平等条件下创建,还可以轻松地嵌入web,可以并行运行。2.3.2应用程序框架 android应用程序由一个或多个组件组成,android的应用程序框架为应用程序层的开发者提供apis,它实际上是一个应用程序的框架。由于上层的应用程序是以java构建的,因此本层次提供的首先包含了ui程序中所需要的各种控件:

23、 例如:views(视图组件)包括lists(列表),grids(栅格),text boxes(文本框),buttons(按钮)等。甚至一个嵌入式的web浏览器。 一个android的应用程序可以利用应用程序框架中的以下几个部分: activity(活动) broadcast receiver(广播接收者) service(服务) content provider(内容提供者)2.3.3库与运行环境 android 包含一套c/c+库,能被系统中不同的组件使用。这些功能通过android应用框架展现给开发人员。下面列出一些核心库: system c library:从bsd继承来的标准c系统函

24、数库,也是系统中最为底层的库,是专门为基于嵌入式linux的设备制定的。 media framework:该库支持多种常用的音频、视频格式的回放和录制,同时支持静态图片文件,包括mpeg4、h.264、mp3、aac、amr、jpg和png等。 surface manager:用于管理不同应用对图形显示子系统和2d和3d图形层的访问。 freetype:位图和向量模式的字体绘制。 sqlite:一个强大的,轻量的关系型数据库引擎,用于所有的应用。 android运行时android包含一组核心库,提供了java语言核心库内的大部分功能。 android运行环境主要指的是虚拟机技术dalvik。

25、dalvik虚拟机依赖linux kernel 来实现一些潜在功能,例如线程和底层内存管理。dalvik虚拟机和一般java虚拟机(java vm)不同,它执行的不是java标准的字节码而是dalvik可执行格式(.dex)中执行文件,该格式的文件经过优化占用很小的内存。在执行的过程中,每一个应用程序即一个进程(linux的一个process)。二者最大的区别在于java vm是以基于栈的虚拟机(stack-based),而dalvik是基于寄存器的虚拟机(register-based)。显然,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。每个android应用程序都在

26、dalvik vm的一个实例中运行,这个实例驻留在一个由linux内核管理的进程中。 2.3.4内核 android使用linux2.6内核来提供系统的核心服务,例如:安全机制,内存管理,进程管理,网络堆栈。android更多的是需要一些与移动设备相关的驱动程序7。其主要的驱动有:显示驱动(display driver)、flash内存驱动(flash memory driver)、照相机驱动(camera driver)、音频驱动(audio driver)、wi-fi驱动(camera driver)、键盘驱动(keyboard driver)、蓝牙驱动(bluetooth driver)

27、、binder ipc驱动(android一个特殊的驱动程序,具有单独的设备节点,提供进程间通讯的功能)。3android的开发环境3.1系统开发的环境 android 的上层应用程序是用java 语言开发,同时还需要基于dalvik虚拟机,所以,google公司推荐使用主流的java继承开发环境eclipse。只有eclipse还不够, 因为是使用 java 语言进行开发, 还应该有由sun公司提供的java sdk(其中包括jre:java runtime environment)。此外,android的应用程序开发和java开发有较大区别的,所以还需要有google提供的android

28、sdk。同时,还需要在 eclipse安装adt,为 android开发提供开发工具的升级或者变更,是eclipse 下开发工具的升级下载的工具。简言之,需要以下软件,才能搭建 android 开发环境,从而进行android应用程序的开发。 3.2eclipse简介eclipse是一个开放源代码的、基于java的可扩展软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台,就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。它主要由eclipse项目、eclipse工具项目和eclipse技术项目三个项目组成,具体包括四个部分组成eclipsepl

29、atform、jdt、cdt和pde。jdt支持java开发、cdt支持c开发、pde用来支持插件开发,eclipseplatform则是一个开放的可扩展ide,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。eclipseplatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始.eclipse包括插件开发环境(plug-indevelopmentenvironment,pde),这个组件主要针对希望扩展eclipse的软件开发人员,因为它允许他们构建与eclipse环境无缝集成的工具。由于eclip

30、se中的每样东西都是插件,对于给eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。eclipse是著名的跨平台的自由集成开发环境(ide)。最初主要用来java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如c+和python的开发工具。eclipse的本身只是一个框架平台,但是众多插件的支持使得eclipse拥有其他功能相对固定的ide软件很难具有的灵活性。许多软件开发商以eclipse为框架开发自己的ide。eclipse最初由oti和ibm两家公司的ide产品开发组创建,起始于1999年4月。ibm提供了最初的eclips

31、e代码基础,包括platform、jdt和pde。目前由ibm牵头,围绕着eclipse项目已经发展成为了一个庞大的eclipse联盟,有150多家软件公司参与到eclipse项目中,其中包括borland、rationalsoftware、redhat及sybase等。eclipse是一个开发源码项目,它其实是visualageforjava的替代品,其界面跟先前的visualageforjava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。3.3其他软件的简介 (1)jdk jdk(java development kit)是sun

32、microsystems针对java开发员的产品。自从java推出以来,jdk已经成为使用最广泛的java sdk。jdk 是整个java的核心,包括了java运行环境,java工具和java基础的类库。jdk是学好java的第一步。而专门运行在x86平台的jrocket在服务端运行效率也要比sun jdk好很多。从sun的jdk5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 (2)android sdk sdk是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言sdk即开发windows平台下的应用

33、程序所使用的sdk。它可以简单的为某个程序设计语言提供应用程序接口api的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。sdk还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。为了鼓励开发者使用其系统或者语言,许多sdk是免费提供的。软件工程师通常从目标系统开发者那里获得软件开发包,也可以直接从互联网下载,有时也被作为营销手段。例如,营销公司会免费提供构件sdk以鼓励人们使用它,从而会吸引更多人由于能免费为其编程而购买其构件。sdk可能附带了使其不能在不兼容的许可证下开发软件的许可证。例如产品供应商提供一个专

34、有的sdk可能与自由软件开发抵触。gpl能使sdk与专有软件开发近乎不兼容。lgpl下的sdk则没有这个问题。android sdk可以理解为是一个android开发的工具,实际上它是作为eclipse的一个插件,有了它,就可以在eclipse里开发android程序了。(3)adt(android development tools) 目前android开发所用的开发工具是eclipse,在eclipse编译ide环境中,安装adt,为android开发提供开发工具的升级或者变更,简单理解为在eclipse下开发工具的升级下载工具。3.4系统开发编程语言的简介java是一种简单的,面向对象的

35、,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。在java出现以前,internet上的信息内容都是一些乏味死板的html文档。这对于那些迷恋于web浏览的人们来说简直不可容忍。他们迫切希望能在web中看到一些交互式的内容,开发人员也极希望能够在web上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力。sun的工程师敏锐地察觉到了这一点,从1994年起,他们开始将oak技术应用于web上,并且开发出了hotjava的第一个版本。当sun公司1995年正式以java这个名字推出的时

36、候,几乎所有的web开发人员都心生感叹:噢,这正是我想要的!于是java成了一颗耀眼的明星,丑小鸭一下子变成了白天鹅。java语言的语法与c语言和c+语言很接近,使得大多数程序员很容易学习和使用java。另一方面,java丢弃了c+中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。java语言是一个面向对象的。java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。j

37、ava语言全面支持动态绑定,而c+语言只对虚函数使用动态绑定。总之,java语言是一个纯的面向对象程序设计语言。java通常被用在网络环境中,为此,java提供了一个安全机制以防恶意代码的攻击。除了java语言具有的许多安全特性以外,java对通过网络下载的类具有一个安全防范机制(类classloader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类securitymanager)让java应用设置安全哨兵。java语言的优良特性使得java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。java对对象技术的全面支持和java平台内嵌的api能缩

38、短应用系统的开发时间并降低成本。java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。4系统的详细设计在如今社会,人们生活学习压力逐渐增大,生活节凑逐渐加快,大多数人没有足够的时间休闲娱乐或与朋友聚会。我们想设计一款小型的手机游戏,为朋友聚会注入活力且不需要我们费心思考只需动动手就可以享受游戏。让我们从繁重的日常生活中解脱出来。游戏的主界面应该力求美观、赏心悦目,以提高玩家对游戏的兴趣。游戏的控制模块应该做到易懂、易操作,给以玩家一个舒服的游戏环境。图4-1 游戏系统实现检测姿态变化计算摇动次数产生随机数结果显示4.1功能设计我们要设计一款

39、真心话大冒险的游戏,我们为游戏精心挑选了10多个搞笑的问题,通过摇动手机(类似于微信的摇一摇),让手机屏幕显示不同问题,从而实现我们的功能,达到娱乐的目的。游戏在摇动的过程中还伴有声音效果,不同问题配有不同的背景图片,达到了美化界面和增强游戏趣味性的效果。4.2设计思路在源程序中设计两个activity,第一个activity用来检测手机手机的姿态变化,要实现摇动检测的功能,我们可以通过调用手机上的传感器实现位置或角度检测,如加速度传感器(accelerometer)、陀螺仪传感器(gyroscope)等。当检测到手机变化了预设的位置或角度时,按照我们的算法进行计算,算出并记录当前的摇动次数,

40、当达到三次时程序由主activity跳转到用来显示结果的activity中。用来显示结果的activity程序先产生一个随机数,将随机数与结果进行匹配,达到不同的随机数能显示不同结果的效果。4.3主要功能实现原理4.3.1传感器传感器就是一种特殊的外设,感受外界的参数变化,然后反映到手机上面。参数包括:磁场、温度、压力、重力加速度、声音。按测量物理量分为:加速度传感器(accelerometer)陀螺仪传感器(gyroscope)环境光照传感器(light)磁力传感器(magnetic field)方向传感器(orientation)压力传感器(pressure)距离传感器(proximity

41、)传感器的作用:(1)传感器是人类五官的延伸。(2)获取准确可靠地信息,更好的研究自然现象和规律以及生产活动。(3)监事和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态,并使产品达到最好的质量。(4)一些新机理和高灵敏度的检测传感器的出现,往往会有边缘学科开发上的突破。(5)让用户对智能手机更加着迷。4.3.2传感器的调用和姿态计算先检测传感器变化,然后根据算法计算摇动次数关键代码如下:private sensoreventlistener mysensorlistener = new sensoreventlistener() /监听传感器private long lastupda

42、tetime;private long uptate_interval_time=200;/ 现在检测时间long currentupdatetime = system.currenttimemillis();/ 两次检测的时间间隔long timeinterval = currentupdatetime - lastupdatetime;/ 判断是否达到了检测时间间隔if (timeinterval 15.6) 在摇动手机的功能中,我们只用到加速度传感器。加速度传感器返回值的单位是加速度的单位 m/s2(米每二次方秒),有三个方向的值分别是:values0: x-axis 方向加速度valu

43、es1: y-axis 方向加速度values2: z-axis 方向加速度其中x,y,z方向的定义是以水平放置在手机的右下脚为参照系坐标原点:x 方向就是手机的水平方向,右为正y 方向就是手机的水平垂直方向,前为正z 方向就是手机的空间垂直方向,天空的方向为正,地球的方向为负4.3.3通过intent跳转到结果显示的activity当检测到手机摇动三次后,跳转到第二个activity中,去显示结果。android中提供了intent机制来协助应用间的交互与通讯,intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,android则根据此intent的描述,负责找到对应的组件

44、,将 intent传递给调用的组件,并完成组件的调用。intent不仅可用于应用程序之间,也可用于应用程序内部的activity/service之间的交互。因此,intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描 述,android则根据此intent的描述, 负责找到对应的组件,将 intent传递给调用的组件,并完成组件的调用。intent在这里起着实现调用者与被调用者之间的解耦作用。intent传递过程中,要找 到目标消费者(另一个activity,intentre

45、ceiver或service),也就是intent的响 应者。代码如下:intent intent = new intent();intent.setclass(context, targetactivy.class);/或者直接用 intent intent = new intent(context, targetactivity.class);startactivity(intent);不过注意用类名跳转,需要在androidmanifest.xml中申明activity 本游戏中intent的运用在mainactivity中的代码如下:在androidmainfest.xml中注册新ac

46、tivity在mainactivity中的代码如下:import android.content.intent;overridepublic void onsensorchanged(sensorevent event) / todo auto-generated method stubif(count=4)intent intent=new intent(mainactivity.this,act1.class);startactivity(intent);count=1;4.3.4随机数的产生利用math.random()方法来生成随机数。在java语言中生成随 机数相对来说比较简单,因为

47、有一个现成的方法可以使用。在math类中,java语言提供了一个叫做random的方法。通过这个方法可以让系统产生随机 数。不过默认情况下,其产生的随机数范围比较小,为大于等于0到小于1的double型随机数。虽然其随机数产生的范围比较小,不能够满足日常的需求。如 日常工作中可能需要产生整数的随机数。其实,只要对这个方法进行一些灵活的处理,就可以获取任意范围的随机数。如我们可以先通过 random方法生成一个随机数,然后将结果乘以10。此时产生的随机数字即为大于等于0小于10的数字。然后再利用int方法进行转换(它会去掉小数掉 后面的数字,即只获取整数部分,不是四舍五入)。最后即可获取一个0到

48、9的整数型随机数字。其实现方法很简单,就是对原有的random方法按照如下的格 式进行变型:(int)(math.random()*10)即可。其实我们还可以对这个方法进行扩展,让其产生任意范围内的随机数。至需要将这个10换 成n即可,如改为(int)(math.random()*n)。此时应用程序就会产生一个大于等于0小与n之间的随机数。如将n设置为5,那么其就会产 生一个0到5之间的整数型的随机数。如果将这个写成一个带参数的方法,那么只要用户输入需要生成随机数的最大值,就可以让这个方法来生成制定范围的随机数。本程序中产生随机数的语句为int a=(int)(math.random()*19

49、)。4.3.5结果的显示根据产生的随机数,显示相应的结果和背景图片先将文字资源放到数组里:string result=getresources().getstring(r.string.no1),getresources().getstring(r.string.no2),); 传入随机数到数组,并显示结果,关键代码为:tv1.settext(resulta);传入随机数到数组,并更改相应的背景图,关键代码为:int beijing=r.drawable.a1,r.drawable.a2,;this.getwindow().setbackgrounddrawableresource(beijinga);4.4界面的美化及特效4.4.1强制横屏游戏在设计时,图片的分辨率是480*800,按照竖屏制作的。因为android手机有自动翻转屏幕的功能,当屏幕为横屏时,游戏的背景图片就会发生变形否则会出现图片变形。因此,我们把屏幕限制为横屏效果更佳。设置activity横屏需要在androidmainfest.xml文件中配置:在结点下配置如下即可: android:configchanges=orientation|keyboardhidden android:screenori

温馨提示

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

评论

0/150

提交评论