Android手机软件开发设计说明书资料_第1页
Android手机软件开发设计说明书资料_第2页
Android手机软件开发设计说明书资料_第3页
Android手机软件开发设计说明书资料_第4页
Android手机软件开发设计说明书资料_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、设计说明书设计说明书 目 录 引言引言.1 发展趋势2 Android 系统框架研究.3 Android 架构分析 .4 类库.5 Android 运行时组.7 Android 解剖分析.8 Android 程序结构解析.9 游戏功能介游戏功能介 .9.9 功能介绍.10 功能背景.10 功能简介.11 游戏策划及准备工作游戏策划及准备工作. .12.12 游戏的策划.12 Android 平台下游戏的准备工作. 13 Android 平台下游戏的框架. .13 各类的简要介绍. .14 系统的设计实现系统的设计实现.14.14 设计结构.14 设计思想. .15 总结总结.33 参考文献参考

2、文献.34 基于基于 AndroidAndroid 平台的快乐数独平台的快乐数独 引引言言 目前随着移动设备越来越普及以及移动设备的硬件的提升,移动设备的功能 越来越完善,移动设备的系统平台也日渐火热起来。目前国内最常见的移动开 发平台有 Symbian,iPhone,Windows Phone 以及当下正在逐步兴起的 Android。目前为止国内已经有很多 Android 系统的用户。截止 2010 年第二季 度 Android 系统的国内市场占有率已经过 10%,在西欧以及北美智能手机市场 占有率也在 20%左右。可见 Android 系统正在崛起之中。但是对于 Android 系 统的应

3、用和开发在国内仍然属于起步和探索阶段。急需要大量的相关技术和人 员的投入。 下面首先介绍一下 Android 系统。Android 是基于 Linux 内核的软件平台和 操作系统,是 Google 在 2007 年 11 月 5 日公布的手机系统平台,早期由 Google 开发,后由(Open Handset Alliance)开发。它采用了软件堆层 (Software stack,又名以软件叠层)的架构,主要分为三部分。低层以 Linux 核心工作为基础,只提供基本功能;其他的应用软件则由各公司自行开 发,以 Java 作为编写程式的一部分。本文对目前应用的 Symbian、WindowsM

4、obile、MacOSX 和 RIM 等平台的现状进行了分析与比较。进 而研究分析了 Android 平台的系统架构和组件模型,接着解析了 Android 中的 重要 API 和应用构成,以 Intent 和生命周期的机制。在此基础上,基于 Android 平台设计和开发校园资讯软件。本系统界面友好、操作便捷,具有良 好的可扩展性和可维护性;系统经过测试,可以稳定运行,能够满足手机用户的 基本需求。 发展趋势发展趋势 随着 3G 应用的不断开发推广,用户会越来越需要更加个性化、优质化的多 媒体数据服务,用户希望能够随时、随地无缝利用 3G 网络进行办公、网上交易、 游戏娱乐、欣赏影视节目、收听

5、和下载音乐等。根据观察,在不久的将来,移 动手机终端将会在以下若干方面具有新的发展。 首先,提供智能提醒服务,手机能够与用户实现密切配合,并监控用户的个 性化设置(保持在本地或者云端) ,当重要时间点或关键事物需要用户注意时, 手机会向用户发出“提醒”服务,服务包括日程提醒、交通状况、最佳行车路 线、最佳泊位、优惠活动、实时新闻、体育赛事、天气情况、股市行情、好友 活动、亲友生日等。 其次,提供虚拟现实体验,手机可以借助传感器、周边设备了解到您的身边 环境,并根据收集到的信息,智能的为您提供有用的信息,如在网络世界养的 宠物,可以借助音频设备表达叫声,借助马达和位置传感器等传递其跳、跃等 行为

6、信息;也可以在用户购物时,提供相关的同类产品价格参考,提醒用户附 近的那个卖场更物美价廉;根据实际场景,为用户及时提供正在操控的产品的 使用方法提醒。 接着,发挥物联网的优势,借助无处不在的传感器,可以感知并分享到周围 世界的海量信息,这些信息将在“云端”得到整合,帮助用户及时、准确的获 得气息信息、交通路况。另外借助物联网,用户间可以方便、快速的分享资源, 协助和交互。如进行端到端的多人游戏、照片分享、书籍分享、音乐分享等。 然后,作为经济工具,在交通或者信息不发达的情况下,帮助用户找到最佳 的市场,获得有价值的帮助信息,帮助用户从事的经济活动的收益率。 最后,更加智能、安全的设备,随着智能

7、手机的不断普及和更加智能,手机 软件的更新、升级将会变得越发简单,并会为用户提供工具或信息,让用户有 能力和权力决策那些内容可以浏览、下载或分享。在安全性上也将更加出色, 能够十分有效的帮助用户进行获取到的内容的管理,保护用户的个人隐私和基 于手机的金融活动如电子钱包、在线支付、在线贸易等。 Android 系统架构研究系统架构研究 Android 是一个包含操作系统、中介架构层及应用程序所产生出来的软件堆 栈架构。由下而上,其核心为嵌入式 Linux2.6 作业系统,向上搭配 Google 为 Android 开发的类库及 Android 运行时,再配合应用程序架构,来开发各种不 同的应用程

8、序。 Android 的功能特征 (l)应用程序架构:在应用程序架构内已经具备多种不同的基础组件,在开发应 用程序时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及 时间。 (2)Dalvik 虚拟机器:在 Android 平台上所使用 Java 虚拟机,不是 Sim 公司的 标准 Java 虚拟机,而是使用 Google 自主开发的代号为 Dalvik 的虚拟机,它在 保证 API 方面的兼容的同时,针对移动手机进行了大幅优化,占用资源更小, 运行效率更高。 (3)集成的浏览器:集成的浏览器是 Android 内建的浏览器,是以 WebKit 的浏览 引擎为基础所开发成的。Wed

9、Kit 是一个开源浏览器网页排版引擎,目前使用 WebKit 引擎的浏览器主要有:Safari,Midori,Epiphany 等。配合 Android 手 机的功能,可以在浏览网页时,达到更好的效果,例如:局部性的缩放网页上的 资讯、触控式的操作等效果。 (4)优化的绘图能力:在程序里可以用到的绘图功能分为 2D 与 3D 两个方面。在 2D 方面,Android 提供了一套特有的类库(SGL;而在 3D 方面则是使用 OpenGLES1.0(openGL for Embedded systems)规范的类库。它们是一种非常快 的图形引擎,并且支持硬件加速。 (5)SQLite 数据库:SQ

10、Lite 提供结构化的数据存取。SQLite 是一款轻型的数据 库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用了它,它占 用的资源非常低。它能够支持 Windows/Linux/U nix 等主流的操作系统,同时 能够跟很多程序语言相结合,比如 php,Java 等,还有 ODBC 接口,同样比起 Mysql,PostgreSQL 来讲,它的处理速度比它们都快。它无需安装和管理配置, 它是一个储存在单一磁盘文件中的完整数据库,体积小只有 250KB 但支持数据 库大小至 2TB。它虽然很小巧,但是支持的 SQL 语句毫不逊色于其它开源数据 库。同时它还支持事务功能和并发处理等等。S

11、QLite 也是一套开放性的关联式 资料库,其特点在于轻量性方面的设计结构,更适合在手机上使用。 (6)多媒体的支持能力:主要用于播放媒体文件。这同时包括对音频(如播放 MP3 或其他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放 URI 地址”(Note:URI 即是统一资源识别地址)模式在网络上直接播放的流媒 体。另外支持各种通用的静态图像格式,例如:JPG、PNG、GIF 等格式。 (7)GSM 技术:Global System for Mobile Communications,即全球移动通讯系 统,俗称”全球通” ,是一种起源于欧洲的移动通信技术标准,是第二代移动通

12、 信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用 户使用一部手机就能行遍全球。GSM 技术是属于手机硬件方面的展现,也是在 开发 Android 应用程序时可以突出的特点之一。 (8)蓝牙、EDGE、3G 及 Wi-Fi:蓝牙是一种新型、开放、低成本、短距离的无线 连接技术,可取代短距离的电缆,实现话音和数据的无线传输。EDGE(Enhanced Data Rate for GSM,Evolution),即增强型数据速率 GSM 演进技术。EDGE 是 一种从 GSM 到 3G 的过渡技术,它主要是在 GSM 系统中采用了一种新的调制方法, 即最先进的多时隙操作和 SPS

13、K 调制技术。由于 8PSK 可将现有 GSM 网络采用的 GMSK 调制技术的信号空间从 2 扩展到 8,从而使每个符号所包含的信息是原来 的 4 倍。Wi-Fi(WirelessFidelity),即无线保真技术,与蓝牙技术一样,同属 于在办公室和家庭中使用的短距离无线技术。该技术使用的是 2.4GHz 附近的频 段,该频段目前尚属没用许可的无线频段。其目前可使用的标准有两个,分别 是 IEEE802.lla 和 IEEE802.11b。这些通讯能力也是属于手机硬件方面的展现, 也是在开发 Android 应用程序时可以突出的特点之一。 (9)GPS: Global Positioning

14、 System,即全球定位系统,它是一个由覆盖全球 的 24 颗卫星组成的卫星系统。这个系统可以保证在任意时刻和任何地点都可以 同时观测到 4 颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便 实现导航、定位、授时等功能。这项技术可以用来引导飞机、船舶、车辆以及 个人。这个同样也是属于手机硬体方面的体现,也是在开发 Android 应用程序 是可以突出的特点之一。 AndroidAndroid 架构分析架构分析 在 Android SDK 中,定义了让开发者使用与核心应用程序相同 API 的权限 应用程序框架是为了要简化组件的重新利用而设计的,应用程序可以发布功能 为其它应用程序所使用

15、。但是,这要受限于应用程序架构的安全机制,使用者 以用同样的机制来新增、置换组件。目前所有的应用程序是由服务及系统来组 成,包含有: (l)一套强大和可扩展的视图系统:用来建构一个应用程序的基本组件,包了在 开发系统画面时,常用的列表、网格、文本框、按钮等控制项,甚至是内嵌的 Web 浏览器。 (2)内容提供者:使应用程序可以访问另一个应用程序的数据(如联系人数库), 或者共享它们自己的数据。 (3)资源管理器:提供各种非程序代码的资源让应用程序去使用。例如:本字符串、 图形文件或排版相关的布局文件。 (4)通知管理器:提供应用程序在状态栏中显示应用程序自定义的提示信息。 (5)活动管理器:管

16、理所有应用程序的生命周期及提供常用的导航回退功能。例 如:启动应用程序要用到的资源准备及关闭应用程序时释放内存及相关资源等工 作。 (6)视窗管理器:用来管理所有启动程序的视窗。 (7)位置管理器:用来管理地图服务的相关功能。 (8)电话管理器:用来管理用户拨打与接听电话的相关功能。 (9)包管理器:管理所有安装在 Android 系统内的包。 类库类库 在 Android 中包含一些 C/C+的类库,这些类库能被 Android 系统中不同的 组件来使用。开发者可以通过应用程序框架使用这些功能。部分核心类库列表 如下: (1)surface Manager:主要的功能是让开发者可以去存取/显

17、示系统及管理的功 能,在显示与存取操作间的对应、互动以及实现无接缝的 2D/3D 多应用程 序之间的整合。例如:在 2D、2D 显示上的合成、叠合动作。 (2)3Dlibraries:主要是依 openGLES1.0 规范所定义的 3D 绘图引擎。该库使用 硬件加速(当硬件可用时),可以将硬件的 3D 功能做最佳化的处理显示。 (3)SGL:主要是处理有关显示 2D 方面的绘图引擎。 (4)Media Frame work:主要是以 packetVideo 公司的 OpenCORE 为基础所发展的 多媒体类库,该库支持回放和录制大量流行的音视频格式和静态图片。例如: MPEG4、H.264、M

18、P3、AAC、AMR、JPG、PNG、GIF 等格式 (5)Free Type:主要是用来显示点阵图和处理向量字形的。 (6)SSL:(secureSocketsuyer),中文名为“安全套接层协议层” ,它是网景公司 提出的基于 WEB 应用的安全协议,当前版本为 3.0。SSL 协议指定了一种在应用 程序协议(如 HTTP、Telenet、NMTP 和 FTP 等)和 TCP/IP 协议之间提供数据安全 性分层的机制,它为 TCP/IP 连接提供数据加密、服务器认证、消息完整性以及 可选的客户机认证。它已被广泛地用于 Web 浏览器与服务器之间的身份认证和 加密数据传输。SSL 协议位于

19、TCP 胆协议与各种应用层协议之间,为数据通讯 提供安全支持。SSL 协议可分为两层:SSL 记录协议(SSL Record Proto col):它 建立在可靠的传输协议(如 TCP)之上,为高层协议提供数据封装、压缩、加密 等基本功能的支持。SSL 握手协议(SSL Hand shake proto col):它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商 加密算法、交换加密密钥等。SSL 协议提供的服务主要有:认证用户和服务器, 确保数据发送到正确的客户机和服务器;加密数据以防止数据中途被窃取; 维护数据的完整性,确保数据在传输过程中不被改变。 (

20、7)SQLite:SQLite 是一套开放性的关联式资料库,能够被所有应用程序使用的 轻量级的关系数据库引擎。 (8)web Kit:是一个先进的网页浏览器引擎,被用来构建 Android 浏览器和内嵌 的 web 视图,也可以让开发者利用这个引擎来做不同的应用。 (9)lib c:就是一个 BSD 标准 C 类库。但是,针对 Linux 嵌入式装置进行过最佳 化的调整。 AndroidAndroid 运行时组件运行时组件 虽然 Android 是用 Java 语言来开发、撰写应用程序,但却不使用 Java 运行时 组件来执行 Java 程序,而是使用了由 Google 自行研发的 Andro

21、id 运行时组件 来执行程序。Android 运行时组件包括两个重要的部分,一个是核心类库,另 一个是 Dalvik 虚拟机。 2.3 Android 应用的构成和工作机制 对于一个 Android 应用程序来说,是由 Activity、IntentReceiver、Service、Content Provider 四部分组成,但并 不是每一个 Android 应用程序都必须由这四部分组成。在应用程序中使用时, 需要在配置文件 AndroidManifest.xml 中进行配置。这个配置文件是每个 Android 应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要 条件等。Andro

22、id 应用的构成和工作流程如图 2-2: 图 2-2 Android 的构成和工作流程 AndroidAndroid 应用程序结构剖析应用程序结构剖析 AndroidAndroid 的的 APIAPI Android API 主要包含了以下几个部分: (1)AndroidManifest.xml AndroidManifest.xml 是系统的控制文件,它告诉系统如何处理所创建的所有 应用组件(尤其是活动(Activity),服务(Service),意图接收器(Intent Receiver)和内容提供者(Content Provider)。举例来说,控制文件就是把活 动和要接收的意图(Int

23、ents)连接在一起的“胶水” 。 (2)活动 活动就是一个有生命周期的对象。一个活动就是完成某些工作的代码块,这 部分工作还可能包括对用户 UI 界面的显示。不过这不是必须的,有些活动从不 显示 UI 界面。 (3)视图 视图可以将其自身绘制到屏幕上。Android 的用户界面由一系列的视图树构 成。接口都是由一组以树的形式出现的视图组成的。开发者可以通过创建一个 新的视图的方法来使用自定义的图形处理技术(比如开发游戏,或者是使用了不 常用的用户图形窗口界面)。 (4)意图 意图是一个简单的消息对象,它表示程序想做某事的“意图” 。比如应用程序 想要显示一个网页,那么它可以通过创建一个 In

24、tent 实例并将其传递给系统来 表示意图浏览这个 URI。系统将定位到能处理这一 Intent 的代码(在当前情况 下就是浏览器),并运行之。意图也可以用于广播系统范围内的有效事件(例如 通知事件)。 (5)服务 服务是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在 其他应用程序的进程里,这取决于自身的需要.。其它的组件可以绑定到一个服 务上来,通过远程过程调用(RPC)来调用这个方法。例如媒体播放器的服务,当 用户退出媒体选择的界面时,仍然希望音乐依然可以继续播放,这时就可用服 务来保证当用户界面关闭时音乐还继续播放着。 (6)通知 通知将以小图标的形式呈现在状态栏里,用户通

25、过与图标的交互来接收消息。 最常见的通知包括短信息、通话记录和语音邮件,但是应用程序也可以创建它 们自己的通知事件。 (7)内容提供者 内容提供者是用来提供对设备上数据进行访问。典型的例子就是使用内容提 供者来访问联系人列表。应用程序也可以使用其它程序通过内容提供者提供的 数据,同时也可以定义自己的内容提供者来向其它应用提供数据访问服务。 AndroidAndroid 应用程序结构解析应用程序结构解析 通常由以下四个组件来构建一个完整的 Android 应用程序。 活动 意图接收器 服务 内容提供者 然而,并不是所有的 Android 应用程序都必须具备上面的四个组件,可以由 上面的一个或几个

26、来组建。当决定使用以上哪些组件来构建 Android 应用程序 时,需要将它们注册在 AndroidManifest.xml 文件中,这是一个 XML 配置文件, 在这个文件中可以声明应用程序组件以及它们的特性和要求。这个配置文件是 每个 Android 应用程序所必需的。 活动活动 活动是以上四个组件中最常用的一个。每个活动都是 Activity 的子类,并实 现了一些独有的功能,如管理 UI 显示和 UI 的反馈事件。一个活动就相当于应 用程序的一个用户界面,由事件响应以及视图等组成。大多数的应用程序通常 包括多个界面。例如:一个文本聊天应用程序,至少应该包含一个联系人列表界 面、一个聊天

27、界面、一个设置界面、一个聊天记录查询界面等等。每个界面其 实都可看作是一个活动。显示一个新界面就相当于生成一个对应的活动对象。 在一些情况下,活动能够返回给它的上级界面一个返回值,例如一个提供给用 户选择照片的活动可以返回给它的调用者用户选择了哪个照片文件。 当一个新的活动出现时,前一个活动被中断并被放入到一个历史堆栈中。用 户可以使用返回键使前一个活动重现。当一个活动不再需要时,可以将它们从 历史堆栈中移除。默认情况下,Android 会为每个应用程序保留从主界面开始 的历史堆栈。 Android 通过一个被称作意图的特殊类,来实现界面与界面之间的跳转。一 个意图描述了一个应用程序想要做什么

28、。在意图的描述结构中,含有两个重要 的数据结构:动作和动作对应的数据。典型的动作类型包括 MAIN、VIEW、PICK、EDIT 等等,而动作对应的数据则以 URI 的形式表示。例如:显 示一个联系人信息的界面,可以创建一个意图,并将它的动作设置成 VIEW,数 据设置成表示这个人信息的 URI。 除此之外,还有一个被称作意图过滤器(IntentFiher)的相关类。当发生一个 有效的目的请求时,意图过滤器用来描述一个活动能够处理什么意图。如上例 中所描述,想要正常显示一个联系人信息的界面,必须声明一个意图过滤器, 它说明当有联系人数据要被在界面上显示时,知道如何处理它们。通常意图过 滤器要被

29、注册在 AndroidManifest.xml 文件中。从一个界面跳转到另一个界面 是由解析各种意图实现的。例如:一个活动使用 startActivity(myIntent)来调 用其他活动时,系统会查找所有已经安装的应用程序的意图过滤器,并从中挑 选出能够匹配 myIntent 意图的活动。随后,这个新的活动接收到意图 (myIntent)的通知并开始运行。当 startActivity 方法被调用,解析意图的处 理过程随之发生,这个机制有以下两个突出的优点: 活动可以通过一个以意图形式产生的请求来重用其他组件的功能。 活动可以在任何时候被一个具有等价意图过滤器的新活动所替代。 意图接收器意

30、图接收器 当想要编写代码来对外部事件做一些处理时,可以使用意图接收器。意图接 收器并不显示 UI 界面,它是通过 NotificationManager 来通知用户他们感兴趣 的事件发生了。意图接收器同样可以被注册在 AndroidManifest.xml 文件中, 同时也可以在代码中使用 Context.registerReceiver()来注册自己的意图接收 器。当一个意图接收器被触发时,系统会根据需要来启动应用程序。 服务服务 服务是具有长生命周期并且没有用户界面的代码。 内容提供者内容提供者 在 Android 中,每个应用程序都是有自己的 userID 及在自己的进程中执行。这 样做

31、的好处是,可以保护系统及应用程序,避免被其他不正常的应用程序所影 响。可以把每个进程想像成是一个黑盒子,彼此不会互相影响,连内存的资料 都无法共享。如果应用程序之间想要共享数据,就需要使用用内容提供者。一 个内容提供者就是一个类,它实现了一个标准的方法集合。其他的应用程序可 以使用这些方法来保存和检索此内容提供者处理过的数据。 游戏功能背景介绍游戏功能背景介绍: 功能介绍:功能介绍: 益智类游戏是一种比较流行的游戏,其画面大都比较简单,很少有 很复杂的游戏特效,但是通常用到人工智能的算法来控制游戏的难度。本次游 戏设计通过讲解捉猫猫游戏在 Android 平台上的设计与实现,本次游戏的思想 来

32、源于天猫上的“捉猫猫”活动。 随着 3G 移动网络应用的推广,手机游戏的规模、复杂程度日益增强;其 技术手段、设计思想、系统体系结构都发生了深刻的变化。手机操作系统正朝 着高处理能力、多功能、智能化的方向发展。近年来,网络文化市场发展很快, 随着互联网的迅速普及、宽带的接入社区和家庭,我国网络游戏市场发展迅速 并进入了一个高速增长期,并已经创造了较大的产值,带动了相关产业的发展。 功能简介功能简介 捉猫猫游戏的规则很简单,只需要在手机屏幕上出现小猫时,点中相应的 猫得到相应的分数即可。该游戏运行步骤如下: 1.启动游戏后首先进入的便是游戏主界面,在主界面中有“关于游戏、游戏帮 助、开始游戏、退

33、出游戏”四个栏目 2.在主界面单击“关于游戏”才当可进入“关于”界面,在关于界面中介绍 了游戏的开发平台、开发日期等资料。 3.在菜单界面单击“游戏帮助”菜单可进入“帮助”界面,在“帮助”界面中 介绍了游戏的基本规则。 4.在主界面单击“开始游戏”菜单可进入游戏界面。 5.在游戏过程中有“暂停、继续、离开”三个功能按钮,单击相应的按钮进入 相应的功能状态,其中“离开”是指离开进入主界面。 6当玩家进入游戏后,屏幕会出现不同的小猫,不同的小猫对应不同的分数, 点中后也会得到不同的分数。游戏设有不同的关卡,每一关卡设置时间为 1 分 钟,而每一关需要相应的分数才能通关,通关后进入下一关,在进入下一

34、关之 前有三秒钟的提示,关卡等级越高,难度越大。 12.在主界面单击退出游戏便可退出游戏。 游戏策划及准备工作游戏策划及准备工作 游戏的策划:游戏的策划: 人类如果经常动用大脑,便可让自身的逻辑和抽象思维能力 得到增长,因此,玩数独游戏就是一个增长智慧的好办法,通过数独题米的解 答,可以让头脑变得更聪明,用户可以吧她作为锻炼逻辑思维及策略绿的工具, 在手机上的实现便可以时时刻刻的开发思维,锻炼头脑, 数独的推理性强,一些数学的思想、推理、假设、反正等都会用到,每个 提米各不相同,不可能用一种方法解决所有问题,这也是数独的魅力所在。 开发这个游戏的目的是为读者在 Android 平台上进行游戏开

35、发提供一个指 导方案,二不是声场商业化的游戏,读者可以以此为范例开发出更好、更具玩 性的数独游戏。 AndroidAndroid 平台下游戏的准备工作平台下游戏的准备工作 游戏的准备工作通常根据游戏的策划来制作游戏所有的图片、声音等。因 为本游戏并没有添加音效设置,所以只需要搜集或制作游戏过程中所有得到的 图片资源即可,本游戏用到的图片文件资源。 游戏的架构游戏的架构 在正式开放代码之前,首先需要对该游戏的设计框架进行简要介绍,以帮 助读者更好的理解游戏的开放过程,希望读者能够仔细阅读本节的内容,在整 体上了解本游戏。这会为之后的开发带来事半功倍的效果。 接下来将通过游戏的运行过程介绍各类在游

36、戏中的作用,具体运行的步骤 如下: (1)启动游戏后,首先在 KLSDActivity 中初始化 ZhuView,然后将用户界面切换 到主动画 ZhuView. (2)而在 ZhuView 中会启动 ZhuViewDrawThread 与 ZhuGoThread 来刷新界面和生 成主动画。 (3)当玩家单击”帮助”菜单式,会创建 HelpView,是显示”帮助”界面。 (4)当玩家单击”关于”菜单式,会创建 AboutView 显示”关于”界面。 (5)党单击”开始游戏”时则正式进入游戏界面 GamneView,同时启动 GameViewDrawThread 来刷新界面。 各类的简要介绍各类的

37、简要介绍 为了让读者更好的理解后面的代码,下面将对游戏的各个累逐一进行简要 说明,关于这些类的详细代码将在后面的章节中相继给出。 为了让读者更好地理解后面的代码,下面将对游戏中的各个类逐一 简要说 明。关于这些累的详细代码将在后面的章节中相继给出。 共有类共有类 SudukuActivity 类 该类是通过集成和扩展类 Activity 来实现的,是整个应用程序的入口,主要是 根据收到的 Handler 消息的不同切换到不同的界面。 欢迎界面相关类欢迎界面相关类 该类为欢迎界面的实现类,主要负责欢迎动画界面的绘制,是欢迎界面的前台 显示的实战 Android 变成手把手教你作出商用软件。 Vi

38、ew,根据后台数据的不同绘制不同效果的动画。 (1)WelcomeViewDrawThread 类 该类为欢迎动画界面的服务线程,主要负责欢迎动画的生成,通过改变表示当 前帧的索引值达到动画的效果。 (2)关于界面 AboutView 类 该类是游戏帮助界面的实现类,主要负责游戏帮助界面的绘制。 游戏界面相关类游戏界面相关类 GameView 类 GameView 类是游戏中最主要的一个类。游戏规则、游戏模型都包含在此类当中, 同时该类还负责绘制游戏的画面、接收玩家的响应。 (1)GameViewDrawthread 类 GameViewDrawthread 类负责定时的刷帧操作。 (2)刷新

39、时间县城 TimeThread 类 该线程的实现非常简单,只是定时改变游戏模型中的实间值,并不负责其他 事件的处理。 (3)数字键盘渲染线程 DrawKeythread 类 该线程的作用是数字键盘图片头明度即可。 (4)数独生成器 ShuDuSuanFa 类 该类是个普通的 Java 类,不继承任何类,只为游戏随机提供存放熟读数字 的二维数组,该类所采用算法的优劣决定了该游戏可玩性的好坏。 系统的设计实现系统的设计实现 结构设计结构设计 图 设计流程图 设计思想设计思想 1.按照程序运行的顺序介绍各个类的作用以及整体的运行框架,步骤如下: 启动游戏,首先被创建的是游戏的主界面,而在主界面如图。

40、 图 界面 应用程序的每个屏幕的显示都要通过继承和扩展基类 Activity 类来实现,钟重 写 Activity 类的 onCreat()方法,在 onCreat()方法中做游戏的初始化工作, 该类代码以下: public class KLSDActivity extends Activity WelcomeView welcomeView;/欢迎动画界面的引用 GameView gameView;/游戏界面的引用 AboutView aboutView;/关于界面 HelpView helpView;/帮助界面 Handler myHandler = new Handler()/用来更新U

41、I线程中的控件 public void handleMessage(Message msg) if(msg.what = 1)/欢迎界面发送的消息 if(welcomeView != null) welcomeView = null; initGameView(); KLSDActivity.this.setContentView(gameView); else if(msg.what = 2)/游戏胜利或者失败时点击屏幕 if(gameView != null) gameView = null; initWelcomeView();/初始化欢迎界面 KLSDActivity.this.set

42、ContentView(welcomeView);/切换到欢迎界 面 else if(msg.what = 3) initAboutView(); KLSDActivity.this.setContentView(aboutView);/切换到关于界面 else if(msg.what = 4) initHelpView(); KLSDActivity.this.setContentView(helpView);/切换到帮助界面 ; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState

43、); /设置全屏 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN , WindowManager.LayoutParams.FLAG_FULLSCREEN); initWelcomeView();/初始化欢迎界面 this.setContentView(welcomeView);/切换到欢迎界面 public void initWelcomeView()/初始化欢迎界面 welcomeView = new Welcome

44、View(this); public void initGameView()/初始化游戏界面 gameView = new GameView(this); public void initAboutView()/初始化关于界面 aboutView = new AboutView(this); public void initHelpView()/初始化帮助界面 helpView = new HelpView(this); 当用户单击“关于”菜单时,将进入帮助界面,菜单按钮时,新界面进入。 当用户单击“帮助”菜单时,将进入帮助界面,该界面实现较简单,只需将图 片绘制到指定位置,然后绘制以下”确定

45、”按钮即可,代码如下 public class ShuDuSuanFa int n = new int99;/存储数字的数组 int num = 1,2,3,4,5,6,7,8,9;/生成随机数字的源数组,随机数字从该数组 中产生 public boolean checkLine(int col)/ 检查列是否符合要求 for(int j = 0;j 8;j+) if(njcol = 0) continue; for(int k =j + 1;k 9;k+) if(njcol = nkcol) return false; return true; public boolean checkNin

46、e(int row,int col)/检查3X3区域是否符合要求 int j = row/3*3;/获得左上角的坐标 int k = col/3*3; for(int i = 0;i 8;i+)/循环比较 if(nj + i/3k + i % 3 = 0) continue; for(int m = i+ 1;m 9;m+) if(nj + i/3k + i % 3 = nj + m/3k + m % 3) return false return true; public boolean checkRow(int row)/检查行是否符合要求 for(int j = 0;j 8;j+) if(

47、nrowj = 0) continue; for(int k =j + 1;k 9;k+) if(nrowj = nrowk) return false; return true; public int generateNum(int row,int col,int time)/产生1-9之间的随机 数字 if(time = 0)/第一次尝试时,初始化随机数字源数组 for(int i = 0;i 9;i+) numi = i + 1; /第10次填充,表明该位置已经卡住,则返回0,由主程序处理退回 if(time = 9) return 0; /不是第一次填充 /生成随机数字,该数字是数组的

48、下标,取数组num中该下标对应的数字为随机数字 int ranNum = (int)(Math.random()*(9-time); /把数字放置在数组倒数第time个位置, int temp = num8 - ranNum; num8 - ranNum = numranNum; numranNum = temp; return num8 - ranNum; public int getShuDu()/生成数字 for(int i = 0;i 9;i+) int time = 0;/尝试填充的数字次数 for(int j = 0;j 0)/不是第一列,则倒退一列 j-=2; continue;

49、 else/是第一列,则倒退到上一行的最后一列 i-; j = 8; continue; if(isCorret(i,j)/成功 time = 0; else time+; j-; return n; public boolean isCorret(int row,int col)/是否满足行、列和九宫区域不 重复的要求 return (checkRow(row) 当用户单击“开始”菜单时,将进入帮助界面,菜单按钮时,新界面进入。游 戏开始:此界面含有暂停、提示、换题、放弃。 图 游戏开始 public class GameView extends SurfaceView implements

50、 SurfaceHolder.Callback KLSDActivity activity;/activity的引用 int alpha = 100;/透明度 float span = (float) 1;/难度(1-10) int status = 0 ; /0游戏中,1暂停中, 2游戏胜利, 3游戏失败 int time=0;/时间 boolean tishi;/是否提示 Bitmap background;/大背景 Bitmap small_backgroud;/背景方格 Bitmap stop;/暂停按钮 Bitmap change;/换题按钮 Bitmap drop;/放弃按钮 Bi

51、tmap help;/提示按钮 Bitmap go_on;/暂停图像 Bitmap keyDown;/选中后单元格样式 Bitmap win;/胜利 Bitmap fail;/失败 Bitmap select;/选中的单元格 Bitmap timeBitmap;/时间中间的冒号 Bitmap heart;/有提示时候画的 Bitmap exit;/是否退出图片 Bitmap key_background;/数字按键背景 Bitmap key_bitmap;/小数字键盘 Bitmap number_bitmap = new Bitmap10;/默认的数字图片 Bitmap number_inpu

52、t = new Bitmap10;/输入的数字图片 Bitmap time_bitmap = new Bitmap10;/时间 Paint paint; boolean drawkey = false; int num;/用来装生成的数字即正确答案 int inputNum;/用来存放输入的数字 int outputNum;/用来存放系统的数字 float scale = (float) 0.8;/数字键盘上数字缩放的比例 Bitmap small_number;int r = 39;/数字键盘小圆圈的半径 int keyx;int keyy;/数字键盘的位置 int downx;int downy;ShuDuSuanFa

温馨提示

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

评论

0/150

提交评论