毕业论文-基于Android平台的扫雷游戏的设计与实现.doc_第1页
毕业论文-基于Android平台的扫雷游戏的设计与实现.doc_第2页
毕业论文-基于Android平台的扫雷游戏的设计与实现.doc_第3页
毕业论文-基于Android平台的扫雷游戏的设计与实现.doc_第4页
毕业论文-基于Android平台的扫雷游戏的设计与实现.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

远程与继续教育学院本科毕业论文(设计)题目:基于android扫雷游戏的设计与实现学习中心: xxxxxxxxxxxx 学 号: xxxxxxxxxxxx 姓 名: xxx 专 业: 计算机科学与技术 指导教师: xxxx 2015 年 8 月 14 日 中国地质大学(武汉)远程与继续教育学院摘 要随着技术通信不断进步,移动通信终端设备的功能也在不断地增长,朝着智能化的方向发展。手机已经不再是个单一的通信设备,而是逐渐融合了个人信息管理,无线上网,移动办公,影音娱乐等功能,成为笔记本电脑之外的另一种更便携,更易用的办公平台。因此,手机的娱乐应用服务将会有很大的发展空间,游戏也是其中之一。本系统主要是实现基于android平台的扫雷游戏,扫雷是一款古老的益智游戏,其设计目的是训练人的逻辑思维能力。本文首先论述了android系统的背景和研究现状,接着简要的介绍了android的技术及对android分析,并且介绍了android应用程序的结构。在程序开发中,采用了先设计好游戏的类框架,然后按照各个类的实现进行代码的编写与实现功能。关键词: 1、智能化 2、 android 3、扫雷 目 录一、绪论7(一) android概述7(二)系统开发背景7二 、系统技术分析9(一) eclipse集成开发环境9(二) jdk11(三) android sdk12(四) adt12三、android应用程序结构剖析14(一) android系统架构研究14(二) android的api14(三)android应用程序结构解析15(四) intent的详细解析17(五) android活动的生命周期19四、系统设计与实现23(一)游戏的策划23(二)游戏基本功能描述23(三)系统详细设计24五、结论28致谢29参考文献30 30中国地质大学(武汉)远程与继续教育学院本科毕业设计(论文)一、绪论(一) android概述智能手机(smartphone),具有独立的操作系统,像个人电脑一样支持用户自行安装软件、游戏等第三方服务商提供的程序,并通过此类程序不断对手机的功能进行扩充,同时可通过移动通讯网络来实现无线网络接入。目前,全球多数手机厂商都有智能手机产品,而芬兰诺基亚、美国苹果、加拿大rim(黑莓)、美国摩托罗拉、中国台湾宏达(htc)更是智能机中的佼佼者。智能手机具有五大特点:1. 具备了无线接入互联网的能力,即要有gsm的支持网络下的gprs或者是cdma网络支持下的cdma 1x或3g网络。2. 人性化,可以根据个人需要扩展机器的功能。3. 它是具有开放性的操作系统,还可以安装非常多的应用程序,使得智能手机的功能可以得到无限的扩展。4. 具有pda功能,其中包括个人信息管理、日程记事、任务安排、多媒体应用、浏览网页。5.强大的功能,扩展性能强,第三方软件支持多。在二零零五年七月,google收购了 android,这么一个小规模收购行动还是立刻引起了移动业界的兴趣,它们怀疑这是 google 进入移动市场的的标志。尽管如此,这个当时只是一个小规模的移动软件开发公司正是由 andy rubin、rich miner、nick sears 以及 chris white 四个人共同创建的。现在看来,他们的怀疑是正确的。差不多两年半以后,在 二零零七 年 十一 月 五 日,google发布了android,它这个的发布给移动业界带来了一场可怕的风暴,基于 linux的全新移动操作系统。这不单单是一个全新的移动系统,非常重要的是:它是开源的。从 android 的发展旅途中,我们看到 2003 年 andy他是一个有远见的人,看到了 2005 年的起步和被 google 的收购,也看到了系统的进步以及新的机型的快速发布。所有这一切都让我们相信,android 将会走向世界第一移动操作系统宝座的步伐是势不可挡的。android 平板电脑也在今年的夏天开始发布以及 google tv 发布以后(也许还有 google music?),android 可能真的会将继续带着我们走向移动设备梦想的彼岸。(二)系统开发背景在我们的生活中有许多的游戏,但是游戏不同,它也会给玩家带来不同的感受和生活理念。游戏是我们日常生活的一个必不可少的娱乐项目,也带动了游戏相关产业市场的发展。游戏平台是经过从游戏机到电视游戏,然后从到pc游戏,到手机游戏,中间经历了很多的技术的更新和变革。但随着新技术的发展和我们生活水平质量的提高,手机开始逐渐变为普及,因为手机是非常小巧便捷的,而且方便的特性成为我们日常生活中必备通讯工具。而基于手机平台的游戏也就拥有的市场空间是巨大的,也因随着3g的开通和应用,手机游戏必然会迎来新的一轮游戏热潮!扫雷最原始的版本可以追溯到1973年一款名为“方块”的游戏。久之后,“方块”被改写成了游戏“rlogic”。在“rlogic”里,玩家的任务是作为美国海军陆战队队员,为指挥中心探出一条没有地雷的安全路线,如果路全被地雷堵死就算输。两年后,汤姆安德森在“rlogic”的基础上又编写出了游戏“地雷”,由此奠定了现代扫雷游戏的雏形。1981年, 微软公司的罗伯特杜尔 和卡特约翰逊两位工程师在windows 3.1系统上加载了该游戏,扫雷游戏才正式在全世界推广开来。这款游戏的玩法是在一个9*9(初级),16*16(中级),16*30(高级),或自定义大小的方块矩阵中随机布置一定量的地雷(初级为10个,中级为40个,高级为99个)。由玩家逐个翻开方块,以找出所有地雷为最终游戏目标。如果玩家翻开的方块有地雷,则游戏结束。扫雷游戏的目标是尽快找到雷区中的所有不是地雷的方块,而不许踩到地雷。点开的数字是几,则说明该数字旁边的8个位置中有几个雷,如果挖开的是地雷,则会输掉游戏。扫雷游戏是一款益智类游戏,目前基于android平台的扫雷游戏还比较少,本系统的开发主要面向android平台,以满足广大手机用户的需要。二 、系统技术分析(一) eclipse集成开发环境eclipse是著名的跨平台的自由集成开发环境(ide)。最初主要用来java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如c+和python的开发工具。下图2-1是进入eclipse里的界面:图2-1 进入eclipse里的编辑界面eclipse的本身只是一个框架平台,但是众多插件的支持使得eclipse拥有其他功能相对固定的ide软件很难具有的灵活性。许多软件开发商以eclipse为框架开发自己的ide。eclipse最初是由ibm公司开发的替代商业软件visual age for java的下一代ide开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟eclipse基金会(eclipse foundation)管理。 2003年,eclipse 3.0选择osgi服务平台规范为运行时架构。 2007年6月,稳定版3.3发布。2008年6月发布代号为ganymede的3.4版。eclipse的基础是富客户机平台(rich client platform, 即rcp)。rcp包括下列组件:核心平台(启动eclipse,运行插件)osgi(标准集束框架)swt(可移植构件工具包)jface(文件缓冲,文本处理,文本编辑器)eclipse工作台(即workbench ,包含视图(views)、编辑器(editors)、视角(perspectives)、和向导(wizards)eclipse采用的技术是ibm公司开发的(swt),这是一种基于java的窗口组件,类似java本身提供的awt和swing窗口组件;不过ibm声称swt比其他java窗口组件更有效率。eclipse的用户界面还使用了gui中间层jface,从而简化了基于swt的应用程序的构建。eclipse的插件机制是轻型软件组件化架构。在富客户机平台上,eclipse使用插件来提供所有的附加功能,例如支持java以外的其他语 言。 已有的分离的插件已经能够支持c/c+(cdt)、perl、ruby,python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到 现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。eclipse的设计思想是:一切皆插件。eclipse核心很小,其它所有功能都以插件的形式附加于eclipse核心之上。eclipse基本内核包括:图形api (swt/jface), java开发环境插件(jdt ),插件开发环境(pde)等。eclipse由各种不同的计划组成。以下列出了部分计划。eclipse计划:本身包括eclipse平台,eclipse富客户端平台(rcp)和java开发工具(jdt)。eclipse测试和性能工具平台(tptp):提供一个允许软件开发者构建诸如测试调试、概况分析、基准评测等测试和性能工具的平台。eclipse web工具平台计划(wtp):用java企业版web应用程序开发工具来扩展eclipse平台。它由以下部分组成:html、javascript、css、jsp、sql、xml、dtd、xsd和wsdl的 源代码编辑器;xsd和wsdl的图形界面编辑器;java企业版的“项目性质”(project nature)、建构器(builder)和模型(model),与一个java企业版的导航(navigator);一个web服务(web service)向导和浏览器,还有一个ws-i测试工具;最后是数据库访问查询的工具与模型。eclipse商业智能和报表工具计划(birt):提供web应用程序(特别是基于java企业版的)的报表开发工具。eclipse可视化界面编辑器计划(vep):一个eclipse下创建图形用户界面代码生成器的框架。eclipse建模框架(emf):依据使用xmi描述的建模规格,生成结构化数据模型的工具和其他应用程序的代码。图形化编辑器框架(gef):能让开发者采用一个现成的应用程序模型来轻松地创建富图形化编辑器。uml2:eclipse平台下的一个uml 2.0元模型的实现,用以支持建模工具的开发。aspectj:一种针对java的面向侧面语言扩展。eclipse通讯框架(ecf):专注于在eclipse平台上创建通讯应用程序的工作。eclipse数据工具平台计划(dtp)eclipse设备驱动软件开发计划(dsdp)c/c+开发工具计划(cdt):努力为eclipse平台提供一个全功能c和c+的集成开发环境(ide),它使用gcc作为编译器。eclipse平台cobol集成开发环境子计划(cobol):将构建一个eclipse平台上的全功能cobol集成开发环境。并行工具平台(ptp):将开发一个对并行计算机架构下的一组工具进行集成的平行工具平台,而且这个平台是可移植的,可伸缩的并基于标准的。嵌入式富客户端平台(ercp):计划将eclipse富客户端平台扩展到嵌入式设备上。这个平台主要是一个富客户端平台(rcp)组件子集的集合。它能让桌面环境下的应用程序模型能够大致同样地能运用在嵌入式设备上。(二) jdkjdk(java development kit)是sun microsystems针对java开发员的产品。自从java推出以来,jdk已经成为使用最广泛的java sdk。jdk 是整个java的核心,包括了java运行环境、java工具和java基础类库。jdk是学好java的第一步。而专门运行在x86平台的jrocket在服务端运行效率也要比sun jdk好很多。从sun的jdk5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。jdk包含的基本组件包括:javac 编译器,将源程序转成字节码jar 打包工具,将相关的类文件打包成一个文件javadoc 文档生成器,从源码注释中提取文档jdb debugger,查错工具java 运行编译后的java程序(.class后缀的)appletviewer:小程序浏览器,一种执行html文件上的java小程序的java浏览器。javah:产生可以调用java过程的c过程,或建立能被java程序调用的c过程的头文件。javap:java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。jconsole: java进行系统调试和监控的工具(三) android sdksdk:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,android sdk 指的既是android专属的软件开发工具包。其最震撼人心之处在于android手机系统的开放性和服务免费。android是一个对第三方软件完全开放的平台,开发者在为其开发程序时 拥有更大的自由度,突破了iphone等只能添加为数不多的固定软件的枷锁。(四) adt抽象数据类型(abstract data type)是指一个数学模型以及定义在该模型上的一组操作。adt包括数据数据元素,数据关系以及相关的操作。即adt数据对象:(数据元素集合)数据关系:(数据关系二元组结合)基本操作:(操作函数的罗列)抽象数据类型(adt)的一个实现包括储存数据元素的存储结构以及实现基本操作的算法。在这个数据抽象思想中,数据类型的定义和它的实现是分开的,这在软件设计中是一个重要的概念。这使得只研究和使用它的结构而不用考虑它的实现细节成为可能。在面向对象编程语言中,像c+、java都能较好的支持adt,如类的机制。而在c语言中缺少了对相关方法的支持。抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,并且规定这些函数的参数性质。一旦定义了一个抽象数据类型及具体实现,程序设计中就可以像使用基本数据类型那样,十分方便地使用抽象数据类型。三、android应用程序结构剖析(一) android系统架构研究android是一个包含操作系统、中介架构层及应用程序所产生出来的软件堆栈架构。由下而上,其核心为嵌入式linux2.6作业系统,向上搭配google为android开发的类库及android运行时,再配合应用程序架构,来开发各种不同的应用程序。android体系结构如下所示:图3-1 android体系结构(二) android的apiandroid api主要包含了以下几个部分:(1)androidmanifest.xmlandroidmanifest.xml是系统的控制文件,它告诉系统如何处理所创建的所有应用组件(尤其是活动(activity),服务(service),意图接收器(intent receiver)和内容提供者(content provider)。举例来说,控制文件就是把活动和要接收的意图(intents)连接在一起的“胶水”。(2)活动活动就是一个有生命周期的对象。一个活动就是完成某些工作的代码块,这部分工作还可能包括对用户ui界面的显示。不过这不是必须的,有些活动从不显示ui界面。(3)视图视图可以将其自身绘制到屏幕上。android的用户界面由一系列的视图树构成。接口都是由一组以树的形式出现的视图组成的。开发者可以通过创建一个新的视图的方法来使用自定义的图形处理技术(比如开发游戏,或者是使用了不常用的用户图形窗口界面)。(4)意图意图是一个简单的消息对象,它表示程序想做某事的“意图”。比如应用程序想要显示一个网页,那么它可以通过创建一个intent实例并将其传递给系统来表示意图浏览这个uri。系统将定位到能处理这一intent的代码(在当前情况下就是浏览器),并运行之。意图也可以用于广播系统范围内的有效事件(例如通知事件)。(5)服务服务是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用程序的进程里,这取决于自身的需要.。其它的组件可以绑定到一个服务上来,通过远程过程调用(rpc)来调用这个方法。例如媒体播放器的服务,当用户退出媒体选择的界面时,仍然希望音乐依然可以继续播放,这时就可用服务来保证当用户界面关闭时音乐还继续播放着。 (6)通知通知将以小图标的形式呈现在状态栏里,用户通过与图标的交互来接收消息。最常见的通知包括短信息、通话记录和语音邮件,但是应用程序也可以创建它们自己的通知事件。(7)内容提供者内容提供者是用来提供对设备上数据进行访问。典型的例子就是使用内容提供者来访问联系人列表。应用程序也可以使用其它程序通过内容提供者提供的数据,同时也可以定义自己的内容提供者来向其它应用提供数据访问服务。(三)android应用程序结构解析通常由以下四个组件来构建一个完整的android应用程序。活动意图接收器服务内容提供者然而,并不是所有的android应用程序都必须具备上面的四个组件,可以由上面的一个或几个来组建。当决定使用以上哪些组件来构建android应用程序时,需要将它们注册在androidmanifest.xml文件中,这是一个xml配置文件,在这个文件中可以声明应用程序组件以及它们的特性和要求。这个配置文件是每个android应用程序所必需的。 1、活动活动是以上四个组件中最常用的一个。每个活动都是activity的子类,并实现了一些独有的功能,如管理ui显示和ui的反馈事件。一个活动就相当于应用程序的一个用户界面,由事件响应以及视图等组成。大多数的应用程序通常包括多个界面。例如:一个文本聊天应用程序,至少应该包含一个联系人列表界面、一个聊天界面、一个设置界面、一个聊天记录查询界面等等。每个界面其实都可看作是一个活动。显示一个新界面就相当于生成一个对应的活动对象。在一些情况下,活动能够返回给它的上级界面一个返回值,例如一个提供给用户选择照片的活动可以返回给它的调用者用户选择了哪个照片文件。当一个新的活动出现时,前一个活动被中断并被放入到一个历史堆栈中。用户可以使用返回键使前一个活动重现。当一个活动不再需要时,可以将它们从历史堆栈中移除。默认情况下,android会为每个应用程序保留从主界面开始的历史堆栈。android通过一个被称作意图的特殊类,来实现界面与界面之间的跳转。一个意图描述了一个应用程序想要做什么。在意图的描述结构中,含有两个重要的数据结构:动作和动作对应的数据。典型的动作类型包括main、view、pick、edit等等,而动作对应的数据则以uri的形式表示。例如:显示一个联系人信息的界面,可以创建一个意图,并将它的动作设置成view,数据设置成表示这个人信息的uri。除此之外,还有一个被称作意图过滤器(intentfiher)的相关类。当发生一个有效的目的请求时,意图过滤器用来描述一个活动能够处理什么意图。如上例中所描述,想要正常显示一个联系人信息的界面,必须声明一个意图过滤器,它说明当有联系人数据要被在界面上显示时,知道如何处理它们。通常意图过滤器要被注册在androidmanifest.xml文件中。从一个界面跳转到另一个界面是由解析各种意图实现的。例如:一个活动使用startactivity(myintent)来调用其他活动时,系统会查找所有已经安装的应用程序的意图过滤器,并从中挑选出能够匹配myintent意图的活动。随后,这个新的活动接收到意图(myintent)的通知并开始运行。当startactivity方法被调用,解析意图的处理过程随之发生,这个机制有以下两个突出的优点:活动可以通过一个以意图形式产生的请求来重用其他组件的功能。活动可以在任何时候被一个具有等价意图过滤器的新活动所替代。 2、意图接收器当想要编写代码来对外部事件做一些处理时,可以使用意图接收器。意图接收器并不显示ui界面,它是通过notificationmanager来通知用户他们感兴趣的事件发生了。意图接收器同样可以被注册在androidmanifest.xml文件中,同时也可以在代码中使用context.registerreceiver()来注册自己的意图接收器。当一个意图接收器被触发时,系统会根据需要来启动应用程序。 3、服务服务是具有长生命周期并且没有用户界面的代码。 4、内容提供者在android中,每个应用程序都是有自己的userid及在自己的进程中执行。这样做的好处是,可以保护系统及应用程序,避免被其他不正常的应用程序所影响。可以把每个进程想像成是一个黑盒子,彼此不会互相影响,连内存的资料都无法共享。如果应用程序之间想要共享数据,就需要使用用内容提供者。一个内容提供者就是一个类,它实现了一个标准的方法集合。其他的应用程序可以使用这些方法来保存和检索此内容提供者处理过的数据。(四) intent的详细解析在一个android应用中,主要是由四种组件组成的,这四种组件可参考上一节的内容。而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的android应用。在这些组件之间的通讯中,主要是由意图协助完成的。意图负责对应用中一次操作的动作、动作对应的数据、附加数据进行描述,android则根据此意图的描述,负责找到相应的组件,将意图传递给它,并完成组件的调用。因此,意图在这里起着一个媒体中介的作用,专门提供组件之间互相调用的相关信息,实现调用者与被调用者之间的解耦。例如,在一个联系人维护的应用中,当在一个联系人列表屏幕(假设对应的activity为listactivity)上,点击某个联系人后,希望能够调出此联系人的详细信息,为了实现这个目的,listactivity需要构造一个intent,这个intent用于告诉系统,要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startactivity(intent intent),将构造的intent传入,系统会根据此intent中的描述,到androidmanifest.xml中找到满足此intent要求的activity。系统会调用找到的activity,即为detailactivity,最终传入intent,detailactivitv则会根据此intent中的描述,执行相应的操作。 1、intent的抽象描述在android参考文档中,对意图的定义是执行某操作的一个抽象描述。该抽象描述的具体内容如下:首先,它是要执行的动作的一个简要描述,如查看、修改等,android定义了一套标准动作。此外,还可以根据应用的需要,定义自己的动作,并可定义相应的活动来处理自定义的动作。其次,是执行动作要操作的数据,android采用指向数据的一个uri方式来实现。另外,除了动作和数据这两个重要属性外,还有一些附加属性:类别:被执行动作的附加信息。例如launcher_category表示意图的接受者应该在launcher中作为顶级应用出现;而alternativecategory表示当前的意图是一系列的可选动作中的一个,这些动作可以在同一个数据上执行。数据类型:显式指定意图的数据类型。一般意图的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用指定的类型。组件:指定意图的目标组件的类名称。通常android会根据意图中包含的其它属性的信息,比如动作、数据/数据类型、类别进行查找,最终找到一个与之匹配的目标组件。附加信息:是其它所有附加信息的集合。使用附加信息可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在附加信息里,传给电子邮件发送组件。总之,动作、数据/数据类型、类别和附加信息一起形成了一种语言。这种语言使系统能够理解诸如“查看某联系人的详细信息”之类的短语。随着应用不断的加入到系统中,它们可以添加新的动作、数据/数据类型和类别来扩展这种语言。应用也可以提供自己的活动来处理已经存在的这样的“短语”,从而改变这些“短语”的行为。 2、android中 intent的使用在应用中,可以以两种形式来使用intent:(l)直接意图:指定了组件属性的意图。通过指定具体的组件类,通知应用启动对应的组件。(2)间接意图:没有指定组件属性的意图。这些意图需要包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定满足此意图的组件。对于直接意图,android不需要去做解析,因为目标组件已经很明确,android需要解析的是那些间接意图,通过解析,将意图映射给可以处理此意图的活动、意图接收器或服务。意图解析机制主要是通过查找己注册在androidmanifest.xml中的所有意图过滤器及其中定义的意图,最终找到匹配的意图。在这个解析过程中,android是通过意图的动作、数据类型、类别这三个属性来进行判断的,判断方法如下:如果意图指明定了动作,则目标组件的意图过滤器的动作列表中就必须包含有这个动作,否则不能匹配。如果意图没有提供数据类型,系统将从数据中得到数据类型。和动作一样,目标组件的数据类型列表中必须包含意图的数据类型,否则不能匹配。如果意图中的数据不是content:类型的uri,而且意图也没有明确指定它的数据类型,将根据意图中数据的格式(比如http:或者mailto:)进行匹配。同上,意图的格式必须出现在目标组件的格式列表中。如果意图指定了一个或多个类别,这些类别必须全部出现在组建的类别列表中。比如意图中包含了两个类别:launcher_category和alternativec_category,解析得到的目标组件必须至少包含这两个类别。(五) android活动的生命周期android平台是个手机作业系统。撇掉其他功能不谈,手机的特性,就是应该能随时在未完成目前动作的时候,暂停正在使用的功能,切换到接电话、接收短信模式,而且在接完电话回到应用程序时,还希望能看到一样的内容。现在用户使用智能手机,大多已习惯使用多工的作业系统(如windowsmobile),可以在用手机听音乐的同时,执行其他多个程序。同时执行多个程序有它的明显好处,但也有它的缺点。每多执行一个应用程序,就会多耗费一些系统内存,而手机里的内存是相当有限的。当同时执行的程序过多,或是关闭的程序没有正确释放掉内存,系统运行时就会觉得越来越慢,甚至不稳定。为了解决这个问题,android引入了一个新的机制生命周期。android应用程序的生命周期是由android框架进行管理,而不是由应用程序直接控制。通常,每一个应用程序(入口一般会是一个活动的oncreate方法),都会占据一个进程。当系统内存即将不足的时候,会依照优先级自动进行进程的回收。不管是使用者或开发者,都无法确定应用程序何时会被回收。关于进程的生命周期将在下一节中介绍,本节主要介绍活动的生命周期。一个活动类别除了oncreate方法之外,还预先定义了onpause(暂停)、onresume(继续)等的基本方法,当从一个活动切换到另一个活动的时候,原来的活动将经过一连串的状态改变。开发者可以在程序中添加一些各状态相对应的流程,每次活动状态改变时,就会执行相对应的流程。要让用户有好的使用体验,活动需要在各个周期中负责保管状态、恢复状态、传送资料等工作。 1、活动的生命状态android的虚拟机是使用堆栈管理。主要有四种状态:(l)活动状态活动状态是指用户启动应用程序或活动后,活动运行中的状态。在android平台上,同一个时刻只会有一个活动处于活动或运行状态。其他的活动都处于未启动、停止或是暂停的状态。(2)暂停状态暂停状态是指当活动暂时暗下来,退到背景画面的状态。当警告对话框或电话来了时,都会让原来运行的活动退到背景画面。新出现的警告对话框等界面元件盖住了原来的活动画面。活动处在暂停状态时,用户无法与原活动互动。(3)停止状态停止状态是指有其他活动正在执行,而这个活动己经离开屏幕,不再动作的状态。通过按返回键,可以调出所有处于停止状态的应用程序列表。处于停止状态的活动,还可以通过通知来唤醒。(4)已回收或未启动状态已回收或未启动状态是指活动尚未被启动、已经被手动终止或己经被系统回收的状态。要手动终止活动,可以在程序中调用finish方法。如果是被系统回收,可能是因为内存不足了,所以系统根据内存不足时的回收规则,将处于停止状态的活动所占用的内存回收。adroid活动声明周期如图3-2:图3-2 android活动生命周期图3-2所示的七个状态又可以归纳成三组:(l)资源分配(创建/销毁)完整的活动生命周期由创建状态开始,由销毁状态结束。创建时分配资源,销毁时释放资源。(2)可见与不可见(启动/重新启动/停止)当活动运行到启动状态时,就可以在屏幕上看到这个活动。相反地,当活动运行到停止状态时,这个活动就会从屏幕上消失。当用户按下返回键回到上一个活动时,会先到重新启动状态,再到一般的启动状态。(3)用户取得屏幕的控制权(继续/暂停)当有个警告对话框、短信、电话等信息进入时,原来的活动会进入暂停状态,暂时放弃屏幕的控制权,被中断到背景去,将前景交给优先级高的事件。当这些优先级高的事件处理完后,活动就改进入继续状态,此时又取得屏幕的控制权。 2、活动的运作流程由实际运行来看,我们可以归纳出所有android应用程序都遵循的运作流程:(l)一般启动启动一个活动的基本流程为oncreate一onstart一onresume。该流程首先分配资源给这个活动(创建状态),然后将活动的内容显示到屏幕上(启动状态);在一切就绪后,取得屏幕的控制权(恢复状态),用户可以开始使用这个程序。(2)调用另一个活动调用另一个活动的基本流程为onpause(l)一oncreate(2)一onstart(2)一0nresume(2)一onstop(l)。该流程首先冻结原来的活动,再交出屏幕控制权;直到活动2完成一般启动流程后,活动1才会被停止。(3)回到原来活动回到原来活动的基本流程为onpause(2)一onrestart(1)一onstart(l)一onresume(1)一onstop(2)一ondestroy(2)。另外按返回键也可以回到原来的活动。(4)退出结束退出结束的基本流程为onpause一onstop一ondestroy。如果程序中有直接调用finish方法来关闭活动的话,系统会跳过先冻结的阶段,直接暂停,停止,然后销毁。(5)回收后再启动回收后再启动的基本流程为oncreate一onstart一onresume。如果被回收掉的活动一旦又重新被调用时,会像一般启动一样再次调用活动的oncreate方法。当在模拟器上已经执行过多个应用程序,只要按下返回键,就会开启最近一次开启过的活动。所以如果要让再次被创建的活动跟原来开启过的一样,那么在活动之间切换时,就要保存资料:即在每次活动运行到暂停或停止状态时先保存资料,然后在创建时将资料读出来。四、系统设计与实现(一)游戏的策划游戏的策划主要包括游戏的情节、目标受众、运行的目标平台、采用的呈现技术、操作方式等几个方面。下面就针对本游戏对上述几个方面进行简单的介绍,如下所列。游戏情节,本游戏为轻量级的益智游戏,因此不存在很复杂的情节。这方面主要要做的工作主要为设计游戏形状、大小、可通过区域。 目标受众 ,这个游戏受众面比较广,应该是老少皆宜的。考虑到受众面广的原因,应该将操作方式设计得更加人性化,画面更加清新。 运行的目标平台,本游戏的目标平台为android2.2。操作方式,本游戏拟采用手机触屏进行操作,对于没有键盘的型号也可以考虑采用虚拟键盘。 由于该游戏使用eclipse作为主要的开发工具,所以在开发之前需要检查eclipse是否已经配置好。(二)游戏基本功能描述扫雷是一款益智游戏,其设计目的是训练人的逻辑思维能力。排除地雷疑似所在的位置,直到所有的雷扫除成功。该游戏则胜利。该游戏的功能流程图如图4-1所示:图4-1 功能流程具体的功能如下:1、开始游戏,点击此图标开始游戏。2、游戏判定,当游戏输时,踩雷显示为m。当游戏胜利时,所有的雷显示为f。 3、时间提示,提示游戏用时多长时间。4、退出游戏,点击此图标退出游戏。(三)系统详细设计1、 系统图标设计(1)、文字说明(2)、截图2、系统运行详情扫雷游戏通过虚拟机运行,点击扫雷图标后,进入系统图标,如图4-3所示:图:4-3 虚拟机进入界面 点击上述图所显示的扫雷图标后,进入游戏界面,在进入游戏界面里以后会出现字符提示,提示点击笑脸图标可开始游戏,如图4-4所示:图:4-4 进入游戏提示界面点击笑脸图标后,进入游戏开始界面,可以开始游戏,如图4-5所示:图:4-5 进入游戏开始界面图:4.3-6 游戏判定失败的界面五、结论本文着重介绍了一个基于android的扫雷游戏的设计与实现,并且最终成功在android模拟器上模拟出了正确的成果。至此,本次我的毕业设计工作即将完成。在本次毕业设计之前我对android的了解不是太深,对eclipse的操作系统也很不熟悉,使得我在毕业设计在开始阶段十分的困难。在花了大量的时间查阅资源,并且在不断的努力实验下顺利搭建好开发环境后,我又发现我对eclipse的开发语言极其陌生,对于毕业设计的工作一度感到力不从心,不过终于借助android相关书籍、论文大量的既有资源和源代码的阅读,并且在xx老师的耐心指导和帮助下完成了此次的毕业设计。尽管本次毕业设计的扫雷游戏已经基本开发完成,但因为使用eclipse来设计基于android的游戏平时很少接触,使得游戏中还存在许多的不足,例如游戏中没有添加对音效、游戏不能选择难度和不能再游戏中直接退出游戏,由于时间和本人能力的关系,只能在日后再进行完善了。我相信通过我的努力和不断研究一定会做出更好的成绩。致谢值此论文完成之际,衷心感谢我的指导老师xx老师,在毕业设计的过程中给予我悉心的指导和帮助,她对待学识的严谨态度和作风让我感触颇深。感谢地质大的老师们帮助我们学习知识,操心我们的考试、学习、作业等。感谢陪我一起度过两个半春秋的本科学员们,和我一起度过了难忘的学习时光。感谢我的爸爸妈妈,将我培养成人,教育我,帮助我。最后,对审批此论文的老师表示深深地谢意。参考文献 1 李华明,android游戏编程之从零开始,北京:清华大学出版社,2011. 2 李刚,疯狂android讲义,北京电子工业出版社,2011 3 杨丰盛,android技术内幕:系统卷,北京机械工业出版社,2011 4 梅尔(reto meier)、 王超, android 2高级编程(第2版),北京清华大学出版社 5 李佐彬等. android开发入门与实战体验.北京机械工业出版社 6 韩超、梁泉. android系统原理及开发要点详解.北京电子工业出版社 7 赵毅主编,跨平台程序设计语言java,西安电子科技大学出版社,20068 孙卫琴,tomcat与java web开发技术详解,电子工业出版社,2009年01月,第2 版请删除以下内容,o(_)o谢谢!the origin of taxation in the united states can be traced to the time when the colonists were heavily taxed by great britain on everything from tea to legal and business documents that were required by the stamp tax. the colonists disdain for this taxation without representation (so-called because the colonies had no voice in the establishment of the taxes) gave rise to revolts such as the boston tea party. however, even after the revolutionary war and the adoption of the u.s. constitution, the main source of revenue for the newly created states was money received from customs and excise taxes on items such as carriages, sugar, whiskey, and snuff. income tax first appeared in the united states in 1862, during the civil war. at that time only about one percent of the population was required to pay the tax. a flat-rate income tax was imposed in 1867. the income tax was repealed in its entirety in 1872. income tax was a rallying point for the populist party in 1892, and had enough support two years later that congress passed the income tax act of 1894. the tax at that time was two percent on individual incomes in excess of $4,000, which meant that it reached only the wealthiest members of the population. the supreme court struck down the tax, holding that it violated the constitutional requirement that direct taxes be apportioned among the states by population (pollock v. farmers loan & trust, 158 u.s. 601, 15 s. ct. 912, 39 l. ed. 1108 1895). after many years of debate and compromise, the sixteenth amendment to the constitution was ratified in 1913, providing congress with the power to lay and collect taxes on income without apportionment among the states. the objectives of the income tax were the equitable distribution of the tax burden and the raising of revenue. since 1913 the u.s. income tax system has become very complex. in 1913 the income tax laws were contained in eighteen pages of legislation; the explanation of the tax reform act of 1986 was more than thirteen hundred pages long (pub. l. 99-514, oct. 22, 1986, 100 stat. 2085). commerce clearing house, a publisher of tax information, released a version of the internal revenue code in the early 1990s that was four times thicker than its version in 1953. changes to the tax laws often reflect the times. the flat tax of 1913 was later replaced with a graduated tax. after the united states entered world war i, the war revenue act of 1917 imposed a maximum tax rate for individuals of 67 percent, compared with a rate of 13 percent in 1916. in 1924 secretary of the treasury andrew w. mellon, speaking to congress about the high level of taxation, stated, the presen

温馨提示

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

评论

0/150

提交评论