基于安卓系统的游戏开发与实现_第1页
基于安卓系统的游戏开发与实现_第2页
基于安卓系统的游戏开发与实现_第3页
基于安卓系统的游戏开发与实现_第4页
基于安卓系统的游戏开发与实现_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

XXXX 大学大学 毕业设计 论文 毕业设计 论文 院院 系 系 信息工程学院信息工程学院 专专 业 业 计算机科学与技术计算机科学与技术 班班 级 级 XXXX 学生姓名 学生姓名 XX 学学 号 号 XXXXXXX 导师姓名 导师姓名 XXXX 职称 职称 讲师讲师 起止时间 起止时间 2014 年年 3 月月 1 日至日至 2014 年年 5 月月 31 日日 XX 大学本科毕业设计 论文 创作诚信承诺书大学本科毕业设计 论文 创作诚信承诺书 1 本人郑重承诺 所提交的毕业设计 论文 题目 是本人在指导教师指导下独立完 成的 没有弄虚作假 没有抄袭 剽窃别人的内容 2 毕业设计 论文 所使用的相关资料 数据 观点等均真实可靠 文中所有引用的他人观点 材料 数据 图表均已标注说明来源 3 毕业设计 论文 中无抄袭 剽窃或不正当引用他人学术观点 思 想和学术成果 伪造 篡改数据的情况 4 本人已被告知并清楚 学校对毕业设计 论文 中的抄袭 剽窃 弄虚作假等违反学术规范的行为将严肃处理 并可能导致毕业设计 论文 成绩不合格 无法正常毕业 取消学士学位资格或注销并追回已发放的毕 业证书 学士学位证书等严重后果 5 若在省教育厅 学校组织的毕业设计 论文 检查 评比中 被发 现有抄袭 剽窃 弄虚作假等违反学术规范的行为 本人愿意接受学校按 有关规定给予的处理 并承担相应责任 学生 签名 日期 年 月 日 目 录 1 前言 1 1 1 课题背景 目的与意义 1 1 2 国内外的发展现状 2 1 3 论文的主要内容以及章节结构 2 2 Android 平台开发概述 3 2 1 Android 系统概述 3 2 2 Android 系统架构 3 2 3 Android 应用程序组件 4 3 系统需求分析 7 3 1 需求分析概述 7 3 2 功能模块要求分析 8 3 3 运行环境要求分析 9 4 总体设计 9 4 1 系统设计 9 4 2 游戏模块设计 11 4 3 类功能的描述 12 4 4 数独游戏所需的开发模式 13 4 5 游戏体系框架设计 13 5 系统实现 14 5 1 数独游戏流程框架 14 5 2 数独算法的实现 14 5 3 游戏初始化界面模块 16 5 4 游戏菜单模块 20 6 系统运行与调试 22 6 1 游戏测试概述 22 6 2 测试环境 23 7 总结与期望 26 参考文献 27 致 谢 28 基于安卓系统的游戏开发与实现基于安卓系统的游戏开发与实现 学生 XX 指导老师 XXX XX 大学信息工程学院 摘要 当今世界 人类越来越离不开智能手机所提供的方便与快捷 它改变了人类传统单一的纸张化通 信模式 单一的音频通话模式以及枯燥的娱乐活动 在 Android 系统诞生之前 智能手机 这个新鲜事物 已经大大丰富了人们的业余生活 并得到了广大手机用户的青睐和认同 因此 各大手机厂商瞄准当下 机遇 和巨大市场潜能 纷纷研发了各种智能手机操作系统 目的就是在于抢占这个市场的制高点 Android 系统因此就是在这个风云际会的历史背景舞台下诞生的 当今手机行业蓬勃发展的快速发展 日益流行的 Android 系统使得越来越多的手机用户开始转向 Android 系统 如地图 音乐 新闻等推出的 Android 应用程序的出现成为安卓开发软件市场的新型客源 开发者可以根据不同阶层不同年龄需求制定出个性化的手机应用游戏 因此深受年轻用户追捧 丰富青 少年业余生活 由此可以看出 Android 的游戏的发展前景是光明的 关键词 安卓 手机软件 游戏 Based on the platform Android game development and design Student XX Faculty Adviser XXX Abstract Today s world more and more inseparable from human convenience and fast smartphones offer it has changed the traditional single sheet of human communication mode single mode and audio calls boring entertainment Before the birth of the Android system smart phones this new thing has been greatly enriched people s leisure life Therefore the major mobile phone manufacturers targeting current opportunities and huge market potential have developed a variety of smart phone operating system The rapid development of today s booming mobile phone industry the increasingly popular Android system makes more and more mobile phone users turning to the Android system where there maps music news and other Android applications launched Android software development market has become a new source developers can develop according to the different needs of different age classes of personalized mobile application game so sought after by young users It can be seen that it will development prospects are bright Key words Android mobile software games XX 大学 2014 届本科毕业设计 论文 1 1 前言 1 1 课题背景 目的与意义 基于 Linux 的开源和自由的操作系统 Android 它的主要作用是应用于移动设备 比如智 能手机以及智能平板电脑 此系统由谷歌公司和开放手机联盟公司主导和开发 在此之前 此款系统尚未有一个统一的中文称呼 而在中国大陆 安卓 或者 安致 被越来越多的人使 用和熟知并接受 Andy Rubin 最初作为手机的主要开发支持 Android 操作系统 2005年8 月由谷歌收购注资 两年后的2007年 谷歌公司与84家硬件制造商合作 并与软件开发商 以及电信运营商共同形成开放手机联盟 联合开发 Android 系统 与此同时 谷歌通过以 Apache 开源许可证的授权方式 并同时发布了 Android 源代码 2008年10月 作为 Android 第一款智能手机面世 随后 Android 系统平台扩展到其他领域 比如电视 平板电脑 游 戏机 智能化管理平台等等 2011年第一季度 在独霸全球手机系统市场多年之久的 Symbian Android 的市场份额撼动其霸主地位 首次位居世界第一的市场份额 根据在2013 年第四季度市场报告显示 手机的全球市场份额中 Android 的平台已经达到了78 1 的占有 率 在2013年9月24日这一天 谷歌开发的 Android 操作系统迎来了五岁的生日 而如今 采用这一系统的全球智能设备的数量已经达到了十亿台 数独游戏 又称 九宫格 游戏 最早起源地是中国 它是一种中国古代的算术游戏 它 通过运用纸和笔 进行一种逻辑演算 玩家在一个 9 9 的棋盘面上 根据现有已知的数字 推理出剩下的所有空格处得数字 使得每一行 每一列以及每一个 3 3 的小盘面上的数字均 只能含有 1 9 中所有数字中的一个 而且在这这 3 3 小盘面中不能出现这九个数字的二次重 复使用 所以答案是唯一的 由于这种游戏操作简单 而且可玩性极高 能锻炼人们的思维 能力 有助于挖掘大脑潜能 因此而风靡全球 如今 手机行业在21世纪蓬勃发展迅速 随着日益流行的 Android 系统的出现 越来越 多的手机用户开始转向 Android 系统 它是基于开源的 Linux 为基础的操作系统 其特有的 个性化 实用性和良好的扩展性 受到外界行业的较高评价和追捧支持 而数独游戏 由于 其操作简单 无需特定语言的基础 同时也起到了人类大脑思维发展中的作用 正因如此 数独如此迅速风靡全球 在 Android 平台上运行的游戏深受大家的追捧 现如今 基于Android 平台上的的游戏不 仅可以运行在智能手机上 我们还可以将其放在平板电脑上运行 基于安卓系统的游戏开发与实现 2 1 2 国内外的发展现状 1 以专业化 大规模化方向发展 随着越来越多的平台和日益增加的显示芯片对 Android 的大力支持 硬件性能将不再成 为制约专业游戏的开发的瓶颈 在越来越多的领域里 都有了 Android 的渗入 比如在 PC XBOX360 PSP 等游戏平台上占据了都将迅速渗透进 Android 以及其他移动平台 这 使得游戏发展往更加专业化的发展方向前进 2 以网络化方向发展 随着各个平台对 WIFI 网络 无线通信网络 蓝牙网络都有了良好的支持 游戏将是一 个更好的创新型和个性化的用户体验 在线网络游戏 多人游戏 与其他玩家联机对战 将 进一步加强游戏的附着力水平 并且容易通过道具来控制生成的盈利模式 这将有助于网络 的未来进一步升级 加快发展进程 3 以时间片化 休闲化方向发展 移动设备的便携性使得休闲游戏将会得到快速发展 移动设备可以把分散时间的合理利 用是促进游戏可以向时间片化发展 也就是说 一个游戏可以在任何时候开始 而结束是可 以在任何时间任何地点 以用户的时间片来运行分散的优势 即使在其他家用电子设备 休 闲游戏 也可以为用户带来的以家庭为单位更多的乐趣 1 3 论文的主要内容以及章节结构 整篇论文共分为六个部分 主要内容安排如下 第一章 前言 在这一章节里 主要介绍本篇论文的课题背景 包括目的以及意义 这其中包括了课题的背景资料简介 国内外 目前的发展现状和未来发展趋势 深入系统 地介绍了本次课题研究和编写的价值及意义所在 第二章 Android 平台开发概述 这一部分是主要介绍了 Android 手机的发展历程 以 及阐述现状 这其中包括详细介绍了 Android 的功能 Android 系统和架构的独到之处以及 Android 的体系框架 第三章 系统需求分析 是对数独游戏的前期规划进行在功能 安全性 需求各方面的 详细分析与探讨 以便制作出符合用户最好的系统 第四章 数独游戏的总体设计 是对该款数独游戏的相关模块 相关功能的策划以及 系统架构的实现进行深入剖析和规划设计 第五章 数独游戏的详细设计 包括程序代码的实现 这一部分主要是介绍了游戏的 界面的绘制 游戏菜单的编写 键盘事件的建立 数独游戏 的逻辑处理以及运行调试 检验 找出问题所在 及时解决 XX 大学 2014 届本科毕业设计 论文 3 第六章 系统调试与运行 这一环节 是针对数独游戏代码实现后进行后期模拟环境检 验 在调试过程中检验代码的可靠性 安全性 是否达到预期效果以及实现既定要求 同时 在发现问题的过程中 调整思路和改变代码 力求达到最佳运行效果 第七章 总结和展望 对该数独游戏的今后发展进行改进和优化调整 并 对整篇课题 论文进行深入总结和回顾 并对未来展望 2 Android 平台开发概述 2 1 Android 系统概述 Android是由Google谷歌公司研发的一款手机操作系统 它是基于Linux平台的智能手机 操作系统 谷歌的目标是将其打造成为基于移动互联网终端的真正开放式的移动终端平台 不但要求可以使用移动手机所需的各类工作软件 同时并在专利方面保证不侵犯他人的权利 以此促进移动互联网的进步和创新 谷歌公司开发的Android 和开放手机的联盟合作是由包括全球30余家手机移动应用开 发龙头企业在内得以组成 谷歌公司和运营商不仅达成合作伙伴关系 并保持与设备制造商 和开发商长期合作 目的是为了利用其优势互补从而建立成熟的移动软件平台 其最大特点 是标准化 开放性的优势 Android是谷歌的未来业务战略的一部分 其目的是为了能够在 任何地点在任何时间提供有效信息 4 结合相关书籍以及有关文献资料 我们对 Android 有了个初步的认识 并基本掌握了如 何去搭建配置 Android 的有关环境和编写调试配置是否成功的 HelloWorld 的测验程序 同时 我们需要知道在基于 Android 平台的一个项目里 要清楚明白哪些文件夹和文件包含相应的 作用 下一节 我们将从另一个深层次去分析 Android 的整体架构 2 2 Android 系统架构 要想了解 Android 系统构架的主要组成部分 可以通过下面这张示意图清楚掌握 基于安卓系统的游戏开发与实现 4 图 1 Android 系统架构 来源 android sdk 可以很清楚地看到 Android 的系统架构分为五个部分 依次是 Linux Kernel Android Runtime Libraries Application Framework Applications 下面将详细介绍这 5 个部分 2 3 Android 应用程序组件 现在我们根据组件的高低 依次来剖析各个部分 虽然 SDK 在这方面已经为我们设想 到面面俱到 但是我们还是需要通过自己的深入研究 通过自己的见解 沿着自底向上分 析各层架构 才有助于我们进一步了解Android 2 3 1 Linux Kernel Linux 内核 Android 基于 Linux 2 6 提供核心系统服务 包括 内存管理 安全 网络堆栈 进程管 理和驱动模型 Linux Kernel 同样可以作为抽象层放置在硬件和软件之间 它通过隐藏相关 具体硬件细节 与此同时 它也能为上层提供相应的统一服务 Android 系统平台是建立在 Linux 内核之上 在人们狭义观念里 Android 系统指的就是 Linux 内核及以上的各层 但是从运行这个角度来剖析 Android 系统是对 Linux 的完全依赖 如果没有 Linux 的支撑 Android 也就无法生存下去 Android 基于 Linux 的最大价值是在于它强大的可移植性 Linux 可以在任何系统中运行 就是因为其可以运行在各式各样的系统芯片构架和硬件中 与此同时 依附于它的 Android 系统 也得以遗传了它强大的可移植性的重要特性 对于计算机专业的同学来说 学过计算 机网络这门专业课之后 我们都会对 OSI RM 有所了解 大概了解分层的意义在于 它能使 得下层提供服务而为上层提供服务的同时 它也能为上层提供统一的服务 与此同时 屏蔽 本层和下层的相关差异 若本层及以下层发生了相应变化 却不会将影响波及到上层 好比 Linux 是一座桥梁 它让行走在上面的 Android 得以实现与各级底层硬件连接起来 使得它 们无需直接耦合 正因如此 降低了移植的复杂性和高难度 各层都能提供固定的 SAP Service Access Point 用专业话来说可以是各层各司其职 从而达到高内聚 低耦 合 当然本次毕业设计只是做简单的关于数独游戏的应用开发 所以对于 Linux Kernel 层 我们就不需要进行深入研究 XX 大学 2014 届本科毕业设计 论文 5 2 3 2 Android Runtime 运行时 Android 系统中的运行时 Runtime 目的就是为了实现 Java 在运行阶段的二次编译提 供支持 Android 有一个集合 是关于核心库 它能为 Java 编程语言核心类库提供相关的可用性 较高的功能 Java 的虚拟机 Dalvik 和 Java 的核心类库共同构成了 Android 的运行时 基于 Android 系统的每一个应用程序 在自己的进程中都是根据 Dalvik 虚拟机实例得以 运行 Dalvik 虚拟机设计成 多个虚拟机可以在一个设备中有效地运行 Dalvik 虚拟机可 以执行的文件格式是 Dex 格式 是一种压缩格式 专为 Dalvik 的设计 非常适合这类高速 系统具有有限内存和处理器 JVM 是基于堆栈是一个众多虚拟机中的一个 而 Dalvik 的虚拟机是基于在寄存器的车 道上 事实上 这两种架构各有优缺点 相对一般 将需要更多的指令基于栈的机器 但机 器基于寄存器的指令是更大的 dx 是一套 Java 工具 将 java class 转换成 DEX 格式 因 为索引有时是必要的 以便优化处理 会使文件的大小将会增加至 1 4 倍 而且会以 ODEX 结尾 2 3 3 Libraries 核心类库 对于 C C 库的集合 这些是包含在 Android 里它能为 Android 系统中的各个组件提供 帮助并可以使用 Android 应用程序框架 application framework 将这些功能曝光于开发人 员 是他们得以了解 下面列出一些核心库 系统系统 C 库库 这是继承了标准 C 系统库 libc 的 BSD 衍生 是作为基于嵌入式 Linux 系统设备而制定的库 媒体库媒体库 基于 PacketVideo 的 OpenCORE 该库可以支持目前当今时下常用的许 多音频 视频格式的播放和录制 同时也支持包括了静态图像文件 例如 AMR PG MPEG4 MP3 AAC J PNG H 264 界面管理界面管理 管理访问不同应用包括了 2D 和 3D 图形层的界面访问 LibWebCore 这是一种 Web 浏览器引擎的新型模式 它可以来对 Android 浏览 器进行驱动 同时可以调用内嵌的 web 视图 SGL 是一种基本的可隐藏于 2D 相关图形引擎 基于安卓系统的游戏开发与实现 6 3D 库库 这个是基于 OpenGL ES 1 0 APIs 目的是在于对该库中的硬件 3D 进行优 化加速 这其中高度化的 3D 软件光栅加速也包含在内 FreeType 位图和矢量字体的渲染绘制 SQLite 是一个强大 轻量级的并且适用于所有应用程序的关系数据库引擎 2 3 4 Application Framework 框架层 在 Android 系统平台中 最重要的核心部分非框架层莫属 Android 系统的设计思想也 涵盖其中 在此之前 很多平台的打造都是基于 Linux 内核而建立的 但是 Android 做到了 超越以往任何一款移动平台并因此堪称成功典范 由多个系通服务 System Service 共同所组成的框架层 这其中涵盖了组件管理服务 通话管理服务 服务电源管理服务 窗口信息服务 地理信息等相关服务 通过系统核心进 程 System Core Process 将这些服务都是寄宿在其中 当程序运行时 每一个服务都会占 据一个独立线程 发送消息以及传输数据是通过进程相互间的通信机制 Inter Process Communication IPC 这个桥梁渠道而得以实现 1 开发人员将核心应用程序的框架的使用 是基于应用程序的体系结构的简化性 可以避 免不必要的重复累赘 通过任何相关的应用程序都能发布它的相关功能 同时可以在其他任 何应用程序使用这些功能 但是需要服从框架执行的相关安全限制 所有的相关应用程序其实是一组服务以及系统 这其中包括 视图 视图 View 这是一种扩展性的视图集合 具有良好的丰富性 对于构建应用 程序来说 必不可少 列表 文本框 网格 按钮都包含在其中 同时还包括了内 嵌的网页浏览器 内容的提供者 内容的提供者 Content Providers 通过应用程序访问其他相关应用程序 比 如备忘录 中的相关数据 同时也能进行数据共享 资源管理器 资源管理器 Resource Manager 这其中包含了可以访问非代码的资源 比如 本地化字符串以及布局文件或者是图形 通知管理器 通知管理器 Notification Manager 这个管理器 可以在状态栏上以自定义式 警告的模式对所有应用程序进行通知功能的自定义显示 活动管理器 活动管理器 Activity Manager 这是用来对应用程序的生命周期进行有效管理 和控制 XX 大学 2014 届本科毕业设计 论文 7 2 3 5 Applications 应用层 基于 java 语言来开发的 Android 的众多应用程序中 对于游戏 对大规模的运算分析和 图像处理的需要是必不可少 正因如此 开源 C C 类库因此发挥其强大的作用 通过 java 语言编写的程序代码 或许会出现一些执行效率过低或者是移植成本过高的问题 所以 开 发人员会根据 C C 来作为实现底层模块的基础 同时利用 Android 提供的交叉编译工具生 成的类库将 Java Native Interface JNI 接口与上层 Java 实现进行交互的方式以此添加到应用中 去 与此同时 开发人员将框架层进行规避 直接调用 Android 系统中的特定类库 由 C C 的一些接口构成的 NDK 开发人员可以用它来实现更高效率的特定调用功能的系统 1 3 系统需求分析 3 1 需求分析概述 软件开发完成的进度好坏以及该怎么去评判 这就是需求分析的重要关键之所在 现实 情况却大相径庭 由于有些用户不了解计算机的相关专业知识 同时开发人员对部分相关业 务的不了解 不精通 以及受到固定思维的影响 用户和开发人员往往对某一个相同问题有 着不同的理解 这会对系统的相关功能的实现造成很大困扰 因此 开发者和需求用户之间 应搭建沟通桥梁 建立有效的沟通渠道 最好将开发者置身于相关业务领域 了解客户真正 需求 才能确保开发出的产品达到客户最佳预期效果和实际需要 3 1 1 功能需求分析 此次数独游戏程序设计一款小游戏 是基于 Android 平台之下设计并与之实现的 最后 将在 Android 模拟器中其进行调试运行 该游戏简单容易上手而且活跃性强 具有较强的益智性 可以锻炼人们的记忆能力 以 及脑力开发 提高人类的数学思维能力和强大的运算能力 同时也有一定的娱乐性 让人愉 悦身心的同时 通过益智游戏从而提高大脑的启发和锻炼 尤其对青少年思维 脑力 意志 都有很好的锻炼 起到事半功倍的作用 使得智能手机与游戏软件对青少年未来教育有指南 针似的帮助和指导性作用 针对 Android 手机 此款数独游戏在设计上具有以下几种功能 1 重来功能 设置重来功能目的在于实现用户输入错误答案 并且因为意外差错无法解开此 基于安卓系统的游戏开发与实现 8 题而想要重新开始本题目 2 下一关功能 设置下一关功能目的在于是实现用户完成一关游戏后可以进入下一关游戏界面 3 解题功能 设置解题功能主要实现用户解答不出此题时候系统提示答案 4 重出题功能 设置重出题功能主要实现用户因为各方面原因不想解答本题或者实在解不开此 题 想要切换到另一题目 5 难易程度选择功能 设置难易程度选择功能目的在于实现用户根据自己的实际水平来选择适合自己 难度的题目 便于提高用户的兴趣和积极性 这其中分为 简单 中等 困难三个 难度 6 退出功能 设置退出功能目的在于实现可以退出游戏界面 返回模拟器初始界面 3 1 2 安全性需求分析 由于此款游戏不涉及用户个人隐私以及任何注册要求 打开软件即可操作使用 不会涉 及用户隐私泄漏等问题 用户主要是年轻的手机用户群 玩家只需要在操作手机界面进行点击安装运行就能够进 行游戏的操作 能熟练上手 通俗易懂 不涉及任何暴力情节 或者不良信息 对玩家没有 任何主观性的安全问题 3 2 功能模块要求分析 图 2 数独游戏功能模块 数独游戏 游 戏 主 模 块 游 戏 菜 单 模 块 帮 助 模 块 关 于 模 块 退 出 模 块 XX 大学 2014 届本科毕业设计 论文 9 根据对数独游戏功能的分析和归纳 可以大体分为游戏主模块 游戏菜单模块 帮助模块 关于模块 退出模块 后面将会逐一介绍这几个模块的特点与功能 3 3 运行环境要求分析 1 硬件资源要求 装载了 Android 系统的智能手机 2 软件资源要求 本机操作系统 Windows XP 需要安装的相关安装包和环境配置版本 Android sdk JDK jdk 7u51 windows i586 eclipse java kepler SR1 win32 zip 4 总体设计 4 1 系统设计 数独是通过运用外界工具纸 笔进行演算推理 是一种简单逻辑数字推理游戏 参与的 玩家只需要根据 9 9 盘面上的已知数字 推理出所有剩余空缺空格的数字 使得其最后结果 满足每一行 每一列和每一个粗线宫内的数字均含一到九 而且不能重复 4 1 1 游戏的功能简介 九宫格 是数独游戏的前身 它起源于中国 发源于中国 而现如今的数独游戏面盘是 个 9 9 的九个小格子 在运行游戏时候 系统会随机产生一个新的棋局 这总共 81 个格子 中 会有一部分的格子中给明了相应的数字 并以此为条件 进行相应空白处格子的填写 这其中就是需要运用到逻辑运算推理 然后玩家需根据已知条件和规则要在空白空格处填入 1 到 9 的数字 并且不得重复出现 只有在满足上述游戏约束条件之后才能视为通过此局游 戏 通过上述分析即可如下所示阐明运行步骤 1 启动游戏后 一开始便是进入第一关卡的游戏 2 当玩家点击 Menu 即可进入菜单界面 如图所示 图 12 Menu 按钮 基于安卓系统的游戏开发与实现 10 3 当游戏玩家选择 解题 按钮的时候 系统会弹出提示框 提示游戏玩家是否真的要集 体 再随后根据玩家的确认选择进行下一步操作 也就是公布正确答案 4 当游戏玩家将游戏界面上的空白格子全部填写完毕的时候 数独系统会自动检验判 断所填写的数字是否满足数独游戏不重复的要求 当有错误的时候 游戏界面始终会停止在 这一关卡 只有当空白处得数字全部填写正确的时候 才会在游戏界面最顶端提示 通过了 进入下一关卡 如图所示 图 13 第一关通过的提示界面 5 当游戏玩家无法解出此关卡的数度游戏时候 选择 下一关 就会进入下一关的游 戏 6 游戏玩家选择 重出题 会将数度游戏的空白处自动打乱 重新出题目 7 在菜单界面中单击 退出 即可退出数独游戏界面 4 1 2 系统模块的划分 三大部分模块的划分 是根据之前的需求分析的要求采用模块化程序设计而得出 图 14 用户功能模块 图 15 UI 界面 图 16 系统模块划分 用户的功能模块 新游戏游戏保存和读取退出 UI 游戏菜单棋盘界面其他 UI 数据处理的模块 填充数字的验证游戏运算逻辑键盘数字的生成 XX 大学 2014 届本科毕业设计 论文 11 如图所示 实线连接的是用户可见的模块 这些模块是用户能通过鼠标就可以操作的基 本模块 而 UI 模块 主要是为了呈现给用户的界面 虚线连接的是用户不可见的模块 也 可以称为数据处理模块 内部实现的模块 4 1 3 模块内部关系的说明 每一个模块的内部之间的关系都是靠内部的数据来实现互通连接的 下面的流程图以此 来介绍每个模块之间的联系 图 17 模块之间的联系 在游戏的内核中 包括了所有游戏的有关信息 全部类成员的相关数据 而它的各个模 块 是类的方法函数用于相应的按键事件 绘图功能 UI 是为了给游戏玩家呈现出 9 9 的棋盘界面 显示出游戏的相关信息以 及游戏菜单等 这些都需要 XMAL 来实现 只有游戏玩家点击按键时候 才会触发 UI 的绘图功能 与此同时 后台的编程代码会 处理相应的按键事件 AI 功能的实现 主要负责游戏内部的数据处理 是数独游戏的核心 几乎所有模块功能 都与此有着密不可分的联系 这其中还包括了数独填充以及数独逻辑 数独验证等 其实 AI 模块是由很多松散的方法组成 各个函数实现了单一的功能 便于修改以及程序移植 4 2 游戏模块设计 用户按键事件 经过修改 内部数据 数据 AI 绘图数据的绑定 触发 游戏主要界面 重 来 下 一 题 重 新 出 题 解 题 难 易 程 度 退 出 基于安卓系统的游戏开发与实现 12 图 18 游戏主要模块 4 2 1 游戏初始化模块 这是游戏的初始化状态 需要达到的效果是简洁干净大方 能吸引玩家兴趣 同时 操 作界面清楚 容易让人上手 简洁明了 所以该数独游戏在打开同时 直接进入游戏第一关 卡 去除一些不必要的开机动画 4 2 2 游戏进程模块 这个游戏模块可以根据不同经验和能力的玩家制定出难易程度相对不同的游戏级别和玩 法 这样能迎合各级玩家的游戏水准和要求 使得新老玩家都能有兴趣使用此游戏 并迅速 上手 所以该数独游戏设计了三个游戏难度 初级 中级 高级三个方向 4 2 3 游戏菜单模块 此模块设定了可以解题 本关游戏重来 重出题 下一关 退出这五个按钮 使得游 戏更加有趣 让玩家有多重选择 不让他们因题目难以解开而失去兴趣 相应为玩家考虑 适当提供解题帮助或者选择下一关游戏 4 3 类功能的描述 4 3 1 共有类 主类MyGame 此类是通过扩展和继承基类 Activity 以此来实现功能的 应当说 这是 整个应用程序的关键入口 同时 也是主要依据收到来自 Handle Handle 主要作用是接受 子线程发送的数据 并因此由此数据配合主线程更新 UI 比如 玩家点击一个 Button 按钮 Android 平台会分发事件到 Button 按钮上 以此响应你的上述操作 的不同消息 来实现 切换到不同的界面 4 3 2 游戏界面的相关类 1 视图 MyView 类 MyView 是数独游戏中最主要的类之一 所有的游戏界面 九宫格模型都会在此类中包 含 同时此类还会负责绘制数独游戏棋盘 数独游戏逻辑等功能 2 菜单栏目 onCreateOptionsMenu 类 onCreateOptionsMenu 类是数独游戏中的菜单 这其中包括了 重出题 重来 解题 下一关 难易程度 退出 等功能 3 数字键盘 onKeyDown 类 onKeyDown 类是数独游戏中的键盘事件 主要功能是记录游戏玩家键盘上输入的数 字 并将其显示在数独游戏的棋盘上 XX 大学 2014 届本科毕业设计 论文 13 4 4 数独游戏所需的开发模式 Activity 人机交互的界面 Activity 的对象可以调用 View 对象从而构建出丰富多彩的 界面 游戏用户在进行相应的输入操作的时候 是在数独游戏界面上进行的 而与此同时 在 Activity 的对象中 也会接收到相关数据 并因此通过 Internet 对象中的一个叫 putExtra 的方法存储至 Internet 对象里面去 然后再通过 Activity 开启一个叫 Service 或 Activity 的对 象 进而就能将 Internet 中的数据从当前的 Activity 对象传递到另一组件中去 随后进行后 台的数据处理和运算 若输入的数据需要一个数据库来存入 那么则把此数据通过 Handle 的对象搭起一个新的线程 在这个新的线程当中 将该数据写到数据库里 为了便于了解其 开发模式 我们将通过如下所示的流程图而展示出来 图 19 数独游戏所需的的开发模式 上述的流程图对数独游戏所需的开发模式进行了清晰展现 它不仅仅可以将 Android 平 台上的及那些基本组件加以合理的利用 与此同时 在在 MVC 的三层架构中的程序代码也 能更加符合其特性和所需要求 以便有利于程序代码的阅读浏览以及未来的游戏功能的扩充 和加强 对重用的频繁度和概率性的有显著的提高 4 5 游戏体系框架设计 图 20 数独游戏体系框架 Activity SQLite Service InternetHandle 公共类 My Game 游戏界面相关类 MyView onCreateOptionsMenuonCreate onKeyDown 基于安卓系统的游戏开发与实现 14 5 系统实现 5 1 数独游戏流程框架 图 21 游戏流程框架图 5 2 数独算法的实现 数独游戏的关键在于 要迅速检验用户玩家所填写的数字是否正确 这一功能的流程图 如下所示 图 22 数独检验功能流程图 XX 大学 2014 届本科毕业设计 论文 15 5 2 1 算法的基本逻辑在数独中的体现 我们将对数独游戏算法类进行解析 这个类基本上是数学逻辑计算 通过一定的数独算 法产生所需要的特定数独数组 并为了便于供其他类方便使用而通过特定的接口来实现 二维数组对于此类的建立来说 是至关重要的 因为要用它来表示所有数独的矩阵 要 使在矩阵中的每行 每列 每一小块的数字都不重复 我们理清游戏的游戏要求 便可以理 解出该算法的基本思路 其内涵在于要从数字0到9中随机任意选取 与此同时 我们还要对 它在这个9 9的格子中行 列 块进行验证 判断其是否符合游戏要求 当填写符合要求的 时候 就可以继续填写下一个 如果不能满足条件要求的时候 再次选择一个排除刚才那个 数字的随机数 然后再进行判断 当所有九个数字都还没有找到能够满足数字的要求 则返 回处理 将最后一个取出的符合条件要求的数字进行新的重新取值 直到所有的数字全部填 写正确 当我们在求解数独游戏的同时 则会运用到回溯法 所有的解会按照一定的结构进行排 列 然后再进行下一次搜索 一般解空间构造成一个树状结构 具有深度优先搜索的策略 通常情况下会有以下有两种方法 1 当如果只需要一个解的时候 找到了相关的解即可停止 2 当要求出所有的解的时候 需要进行 数的遍历 以致找到所有的解 在我们的意识里 所谓的回溯法 其实就是按照一种特定的搜索方法 进行组织性 协 调性 防止其不必要的穷举式搜索 她的最基本方法就是回溯搜索 本方法适用于一些相当 大的组合数的解决方案 在解决空间树等问题中 按照深度优先搜索策略的回溯法是其最优解决方案 首先从根 节点开始进行搜索 当到达空间树的任意一点 所以需要确定这些结点里是否包含了该问题 的与之相关的解决问题的方案 如果没有发现与之相对应的符合要求的结点 就跳过搜索该 结点的相关子树 并随后逐层返回到原先的根节点 否则 就要对该子树进行深度优先搜索 我们要搜索查找算法中基本思想 这其中的回溯法 就是关键 在已知的一问题中 通 过对题意已经划定好的所有可能的边界解决区域 俗称一种相对应的可能解决 与此同时 我们需要根据已知条件得到相应的约束条件 通过在根据搜索的搜索方式时 利用深度搜索 中的所有可能的解决方案 使用该方案的第一层找到一个可能解 这样的搜索解决方案 会 使得结果能符合所要求的约束条件 并以此作为出发点 以便找到下一个的可能解 将搜索 范围扩大到第二层 如果在第二层找到的话 就继续深入到第三层 按照上述搜索方式继续 下去 直到找到所有层的全部可能解 则这个问题的就得以完整解决 如果所有可能解在第 基于安卓系统的游戏开发与实现 16 二层都不满足约束条件 则需要返回到第一层 放弃其原先的可能解 使用了第一层的下一 个可能的解 即回溯 以此类推 寻找第二层的可能解 回溯法的优势相比于其他的穷举式的搜索方法 在于它不需要对所有层的每个可能解都 进行遍历搜索 这样既费时又费力 它的高效性在于能避重就轻 能对无法满足条件的就抛 弃该可能解 进而对下一个可能解进行寻找 而无需其余部分的下层解 如果约束条件在当 前层次的所有可能解中都没有能实现满足的时候 则需要返回到上一层 抛弃原先的可能解 进行重新遍历搜索 根据上面的分析 总结出一些数独的游戏规则推理 以便于我们分析数独问题相关的约 束条件 1 每一个小格子里面的数值区间范围在 1 9 内 不能超出这个区间 2 每一个小格子的数字在当前所在行中不得重复 也就是说 1 9 内在这一行的 9 个空 格中只能出现一次 3 每一个小格子的数字在当前所在列中不得重复 也就是说 1 9 内在这一列的出现的 次数只能是一次 4 每一个小格子的数字在每一个 3 3 的小宫格内不能重复出现 也就是说在这小方块 中 9 个数字不允许重复出现两次以上 综上所述 通过约束条件进行筛选的回溯法 在剔除掉那些不可能的解后 留下的就是 该问题的至少一个以上的解 5 3 游戏初始化界面模块 5 3 1 游戏界面的实现 在建立数独数据之前 程序需要一个 9 9 的数据例如 5129 这样的 81 个数字要依次从第一行开始从左往右按顺序排列在 9 9 的九宫格内 我们需要设置一个二维数组 int 9 9 以便存储数据 数据随机变为 0 是根据游戏玩家 的不同选择而造成的 根据不同级别要求 因此我设计了两个数组 oldData 保存原有数据 而 data 保存当前数据 对于原有数据不能进行修改和清除 对 oldData 中为 0 的数据可以进行修改和清除 将方法 easyData 设定为 final 关键字 目的是不允许它有子类 既不能继承 XX 大学 2014 届本科毕业设计 论文 17 图 23 游戏界面实现代码 5 3 2 在 onDraw 方法中绘制数据 onDraw 是为重写绘制方法 在 onDraw 方法中 主要是绘制游戏界面所需要的 9 9 的九宫格数组 游戏界面背景颜色 游戏所填写数字的颜色 以及每个小格子的背 景颜色 程序实现代码片段如下所示 绘制相关界面 这其中包括棋盘背景 九宫格的水平细线以及垂直线 图 24 绘制界面的实现代码 绘制数据 基于安卓系统的游戏开发与实现 18 图 25 绘制数据的实现代码 5 3 3 编写按键事件 在 onKeyDown 类中 设置了 KeyCode KeyEvent 和 event 三个变量 目的是通过 KeyEvent KeyCode 来判断玩家在键盘上输入的数字是几 并通过无返回值方法 setData 来在 棋盘上显示出相应的数字 其中 1 9 是放置键盘上的输入数据 而 0 则是代表清除数据 程序代码片段如下 图 26 键盘事件 在 setData 这个方法中 原有数据为零的可以清除和放置数据 XX 大学 2014 届本科毕业设计 论文 19 5 3 4 检测游戏填充结果 根据数独游戏的游戏规则 游戏玩家需要填充 81 个空格之后 必须要同时满足每行 每一列的每个数字都不得重复出现两次以上 这其中包括小九宫格内的 3 3 的九个数字 也必须不能相同 并将其作为后期游戏结果检测的重要条件 因此编写 chkGameOver 检 查是否完成游戏 首先是检查数独游戏程序是否结束 图 27 chkGameOver 方法 其次显示游戏标题 提示玩家目前关卡数 图 28 setGameTitle 方法 行检测 首先对各行进行检测 提供了检测的行内的九个数字是否有重复数据的方法 is over 该方法遍历这一行中所有的九个数字 当遍历到某个数字时 检测该数字后 面的数字是否出现了重复 举个例子 例如 当我们检测到第 4 个数字是 9 时 则检测 第 5 9 个数字是否出现过 9 这个数字 若是出现重复 则会停止检测 游戏失败 所以 此功能既可以既可以避免重复检测的浪费 同时也能避免遗漏的精确 图 29 行检测实现代码 列检测 基于安卓系统的游戏开发与实现 20 列检测的代码类似于对行的数据检测 但是以此同时还需要对每行进行检测 因此 数独游戏程序设计了对行数据的检测方法 isOver 该检测方法的代码如下 图 30 列检测实现代码 3 3 小九宫格的检测方法 通过上述剖析 我们除了要对九宫格中的行与列进行数据重复检测以及验证结果之外 我们还需要对每一个 3 3 的小九宫格内的所填写的数字进行重复检测和检验正确性 这是因 为数独游戏的约束条件所致 为了避免出现重复现象而不符合数独游戏规则 检测的原理其 实与行 列检测相同 只是对 9 9 的大数组进行细分 但是需要计算出九宫格内数字的所在 位置 变量 i 和 j 指定了检测九宫格的位置 数独单元格中一共有 3 3 个九宫格 用以下程 序设计完成九宫格内对重复数字的检测 图 31 检测小九宫格代码 5 4 游戏菜单模块 5 4 1 基本功能完成 添加菜单功能 建立一个 onCreateOptionsMenu 类 这其中设置 重出题 重来 解题 下一关 难易程度 和 退出 并使用 super 关键字来访问和调用 onCreateOptionsMenu 类的 Menu 成 员变量 XX 大学 2014 届本科毕业设计 论文 21 图 32 菜单功能 5 4 2 添加菜单事件 当玩家点击屏幕菜单上的任意一个按钮时候 会调用该类来处理菜单事件 在 下一关 界面中实现起来比较简单 只是需要判断游戏玩家是否真的是需要进入下一关即可 当玩家 点击 退出 按钮时 会向 Activity 发送一个 Handle 消息 通知控制器切换屏幕 图 33 添加菜单事件 在菜单事件中 还根据不同按钮功能设定了以下几种私有方法 1 showAll 此方法是有关解题的方法她将使用 easyData 中相应关卡的数据 并将它依次显示在棋盘 上 以此来实现解题功能 基于安卓系统的游戏开发与实现 22 2 msg 此方法的作用在于对话框里的有关信息将通过此方法来显示 3 selHard 此方法是用来调整难易程度 根据不同选择 棋盘上的空白格子数也会随之发生变化 4 closeGame 此方法的目的在于达到实现对游戏界面的退出功能的实现化和作用化 图 34 菜单功能实现 6 系统运行与调试 6 1 游戏测试概述 当游戏软件创建好之后 必须要进行实战检验 要对现实中所检验出的结果进行评估 以便分析其目前状态是否达到了预期目标和理想设计标准 以此同时 我们还需要进行有效 的调试和操作 通过不断调整和解决所发现的相关问题 解决软件的缺陷和不足 以此提高 产品的质量和性能 作为软件测试的重要组成部分 游戏测试是软件测试的所有常用的功能 但是游戏本身具有一定的特殊性 此外 游戏主要是测试包括两部分 对于在测试这个环节 相对于整个软件开发过程来说 这是一个很重要的一个环节 它 关系到整个软件的生命周期的预测以及存活性 在所有过程中的初始化操作就是要求程序员 XX 大学 2014 届本科毕业设计 论文 23 对每个阶段的集中性检测 以此来确保相应的各个模块都能达到预期目标 各司其职 1 对游戏的性能测试 当下所流行的各种游戏 都是在一定程度 上结合社会发展要求 对现实世界进行一种 虚拟化 角色化的模拟境况 与此同时 他还会包含了一部分人类发展到一定阶段所出现的 各种特性 它也涉及了一部分人体工程学中的易操作性和娱乐性等相关特点 由于游戏在一定的程度上是模拟现实世界的一种虚拟境况 所以他不仅仅包含了人类文 明社会的一部分特性 与此同时 还会涉及到操作简单可玩性 丰富的娱乐性等一些特点 因此 我将从三个部分来阐述游戏的相关测试环节 对游戏情节的相关测试

温馨提示

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

评论

0/150

提交评论