基于安卓的俄罗斯方块游戏-论文

更新时间:2024-04-25 05:50:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科毕业设计说明书(论文)

第 1 页 共 33 页

题目:基于

毕 业 设 计

Android俄罗斯方块游戏的设计与实现

姓 名: (宋体小三居中) 学 号: (班级+学号)(字号同上) 学 院: (字号同上) 专 业: (字号同上) 同 组 人: (字号同上) 指 导 教 师: (字号同上) 协助指导教师: (字号同上) 年 月 日(宋体小三居中)

(阿拉伯数字) 本科毕业设计说明书(论文)

摘 要

第 2 页 共 33 页

随着移动平台的崛起,越来越多的传统PC软件被移植到移动平台,比如ipad,iphone,Android等智能终端设备,在这些平台中,Android占领着最大的市场份额,所以为Android用户开发满足日常使用的软件成为了现在的一大热门。

本次设计选用了时下比较热门的Android平台来作为开发技术,实现了一个俄罗斯游戏系统,用户可以使用本系统来玩俄罗游戏。

本论文将逐步介绍基于Android平台的俄罗斯游戏系统的开发背景和意义,接着详细介绍了俄罗斯游戏系统的分析、设计与实现过程,最后对本论文做了总结。

关键字:Android、俄罗斯游戏、SQLite、手机

本科毕业设计说明书(论文)

ABSTRACT

第 3 页 共 33 页

With the rise of mobile platforms, more and more traditional PC software is ported to mobile platforms, such as iPad, iPhone, Android and other smart terminal equipment, to occupy the largest market share in these platforms, Android, developed for Android usersmeet the day-to-day use of the software has become a favorite.

The design selection of the more popular nowadays Android platform as the development of technology, a Russian game system, the user can use the system to play the Russian game.

This thesis is a step-by-step introduction to the background and significance of the development of the Russian game system based on the Android platform, and then details the the Russian game system analysis, design and implementation process, and finally the paper summarized.

Keywords: Android, Russian game, SQLite, phone

本科毕业设计说明书(论文)

目录

第 4 页 共 33 页

摘 要 ........................................................................................................................................................ 2 ABSTRACT ............................................................................................................................................... 3 目录 ............................................................................................................................................................ 4 1 引言 ...................................................................................................................................................... 5

1.1 课题研究背景 .......................................................................................................................... 5 1.2 国内外研究现状 ...................................................................................................................... 5 1.3 课题研究方法和研究路线 ........................................................................................................ 6 1.4 论文的组织结构 ........................................................................................................................ 7 2关键技术介绍 ......................................................................................................................................... 8

2.1 什么是Android ......................................................................................................................... 8 2.2 Android系统架构简介 ........................................................................................................... 8

2.1.1 应用程序(APPLICATIONS) ............................................................................................ 9 2.2.2 应用程序框架(APPLICATION FRAMEWORK) ................................................................... 9 2.3.3 Android 运行时(RUNTIME) .......................................................................................... 9 2.3.4 系统库(LIBRARIES) ...................................................................................................... 9 2.3.5 Linux ............................................................................................................................ 10 2.3 SQLite数据库 ....................................................................................................................... 10 3 系统分析 .............................................................................................................................................11

3.1概述 ............................................................................................................................................11

3.1.1系统分析的原则 ............................................................................................................11 3.1.2系统分析的方法 ............................................................................................................11 3.1.3系统性能要求分析 ........................................................................................................11 3.2 系统可行性分析 ...................................................................................................................... 12 3.3 系统算法功能需求 .................................................................................................................. 13 3.4 系统算法与流程分析 .............................................................................................................. 14 4 系统设计 ............................................................................................................................................ 16

4.1 系统设计目标 .......................................................................................................................... 16 4.2 系统功能模块设计 .................................................................................................................. 16 4.3 工程文件结构设计 .................................................................................................................. 17 5 系统编码开发 .................................................................................................................................... 20

5.1系统主界面 ............................................................................................................................... 20 5.2游戏主界面 ............................................................................................................................... 20 5.3排行榜界面开发 ....................................................................................................................... 21 5.4声音控制实现 ........................................................................................................................... 22 6 系统测试 ............................................................................................................................................ 23

6.1测试的重要性 ........................................................................................................................... 23 6.2测试的目的 ............................................................................................................................... 24 7 总结和展望 ........................................................................................................................................ 25 结束语 ...................................................................................................................................................... 26 致 谢 ...................................................................................................................................................... 27 参 考 文 献 ............................................................................................................................................ 28 附录 .......................................................................................................................................................... 29

本科毕业设计说明书(论文)

1 引言

1.1 课题研究背景

第 5 页 共 33 页

Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序—移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google与开放手机联盟合作开发了 Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和 T-Mobile 在内的30多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。

作为谷歌企业战略的重要组成部分,Android 将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。全球为数众多的移动电话用户正在使用各种基于 Android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。

1.2 国内外研究现状

手机游戏产业在随着网络的发展有了长足的发展。游戏最早起源于纯文字的交互游戏MUD;MUD是英文Multi-user Dungeons的缩写。纯文字交互顾名思义是一纯文字的形式来进行游戏。即所有的场景描述、物品的样子、所有人的行动、时间的描述都是用文字的方式表达的。总之文字MUD是一个很需要想象力的游戏形式需要从文字转化成玩家自己脑海中的现实场景。 随着电子元器件的发展电子产品迅速发展。掌上游戏机和电视游戏机在80年代和90年代风靡一时此时由苏联人Alex Pajitnov制作的游戏俄罗斯方块在掌上游戏机和电视游戏机上流行其造成的轰动和经济价值成为游戏史上的大事。

俄罗斯方块是个老幼皆宜的小游戏它实现由四块正方形的色块组成然后存储在一个数组的四个元素中计算机随机产生不同七种类型的方块根据计算机时钟控制它在一定的时间不停的产生用户根据键盘的四个方向键控制翻转、向左、向右和向下操作控制键的实现是由键盘的方向键的消息函数实现。然后程序根据这七种方块堆叠成各种不同的模型。 

本科毕业设计说明书(论文)

第 6 页 共 33 页

俄罗斯方块游戏是一个比较经典的游戏根据软件工程有关的规范以合理的开发原则设计出俄罗斯方块游戏并给人们的生活带来唯美的艺术享受和健康愉快的补充。我希望通过探索去实现它从实践和实际的项目中提高自己的编程能力。

俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值在游戏史上是非常巨大的。这款游戏最初是由苏联的游戏制作人 Alex Pajitnov 制作的。 最终经过各种改良,俄罗斯方块的第一个PC版本诞生了,他们给这个游戏取了一个源于希腊文字的名字“四”(tetra)——Tetris,即现在的“俄罗斯方块”。 这种将不断掉落的各种形状的方块摆满一行将之消除的游戏,不仅风靡了当时的俄罗斯, 甚至到现在依然以其不退的热度席卷着全球。

众多的游戏开发者也纷纷效仿制作出了各种新版本, 因此也使“俄罗斯方块”这款老少皆宜的游戏变得越来越趣味横生。对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在一些联众网络游戏中,更有一些独有的魅力 ―― 有单机作战、双人单机对战和双人网络对战三种游戏模式,三种模式都是在一行堆满后就可以消掉,最后方块堆积至窗口顶端,即告负,用户可任选一种模式进行游戏。其中单人模式是一种玩积分的游戏,如果积分高的话,还可以存入高分榜上。而双人单机对战模式则是两个人在同一台机器上进行对战游戏,双人网络对战模式则需要两人首先进行网络连接,然后才能进行对战游戏,后两种模式在游戏过程中如果自己一次消去两行以上的话,就可以送给对方使对方的行数增长,让你尽情体会对战的趣味。另外,网络对战模式还具备网络聊天功能,让你在游戏过程中还能体验到聊天的乐趣,同时也给用户提供了一个展现自己高超技艺的场所。

1.3 课题研究方法和研究路线

本课题研究方法主要采取调查法、对比法和文献分析法。通过考察当前教学大纲、教学方案等信息,整理相关的文档。

研究路线:

1.列出总体框架结构,建立大模块,再细分各小模块,建立模块与模块之间的联系。

2.根据自己学过的并能熟练运用的设计软件,确定开发工具,拟定采用Visual Studio作为前台开发工具,设计前台用户与管理人员的操作界面。

3.以SQL Server应用软件建立后台数据库服务层,合理地处理好各数据之间的关系,发挥出SQL Server的功能。

本科毕业设计说明书(论文)

第 7 页 共 33 页

4.确定关键技术,即运用ADO.NET访问SQL Server数据库,把前台用户操作界面层与后台数据库服务层有效的联系起来,使得整个系统完整,让用户用起来更简洁方便。

1.4 论文的组织结构

本文详细介绍了基于C#的教师教学管理信息系统开发之日常课程管理系统的设计、开发的全过程。从开始到程序设计的实现,将在一下的几章中予以介绍:

第1章 绪论,这一章主要是对本次毕业设计所开发的系统进行问题的定义,通过问题的定义明白需要做些什么,并且对开发内容简单的介绍了一下;同时本章还对课题的研究背景与研究意义进行分析,对开发本系统的可行性分析还有对论文各章内容的简要介绍。

第2章 相关技术介绍,正对本次设计,对涉及到的理论知识和用到的开发工具做相关阐述。

第3章 系统分析,主要介绍了本系统需要实现的功能模块和本系统的数据库设计、界面的详细设计等。

第4章 系统详细设计,主要介绍了本系统的整个设计过程、设计思路以及设计中应该注意的问题。

第5章 系统实现,主要介绍了本设计的实现环境和实现的核心代码。 第6章 系统测试,介绍了软件测试的重要性以及测试的相关方法,还结合本系统给出测试用例。

最后:致谢、参考文献。

本科毕业设计说明书(论文)

2关键技术介绍

2.1 什么是Android

第 8 页 共 33 页

Android是首个基于Linux平台的开源手机操作系统,该平台由操作系统中间件,用户界面和应用软件组成号称是首个为移动终端打造的真正开放和完整的软件。

Android一词的本义指“机器人”,2003年美国有一家以Android为名的小公司成立,开发手机平台。Google收购Android之后,于07年11月5日发布了开源的Android平台——一款包括操作系统(基于Linux内核)、中间件和关键应用的手机平台,并组建了开放手机联盟(Open Handset Alliance),包括Google、中国移动、T-Mobile、宏达、高通、摩托罗拉等领军企业。

2008年9月22日,美国运营商T-Mobile USA在纽约正式发布第一款Google手机——T-Mobile G1。该款手机为宏达电制造,是世界上第一部使用Android操作系统的手机。

2.2 Android系统架构简介

从软件分层的角度来看,Android平台由应用程序,应用程序框架,Android运行时,库以及Linux内核共5部分构成。如图6.1所示。

图6.1 整体结构

本科毕业设计说明书(论文)

2.1.1 应用程序(APPLICATIONS)

第 9 页 共 33 页

Android平台默认包含了一系列核心应用程序,包括电子邮件、短信、日历、地图、浏览器、联系人管理程序等,这些程序都以java 程序语言编写,你也可以用自己便携的应用程序来替换Android提供的应用程序,这个替换的机制实际是由应用程序框架来保证的。如图6.2所示。

图6.2 应用层

2.2.2 应用程序框架(APPLICATION FRAMEWORK)

应用程序框架是我们进行Android开发的基础应用程序框架层包含了视图系统,内容提供器,窗口管理器,活动管理器,通知管理器,位置管理器,资源管理器,电话管理器和包管理器9大部分。如图6.3所示。

图6.3 中间件层

2.3.3 Android 运行时(RUNTIME)

Android 虽然采取Java程序语言来编写应用程序,但不使用J2ME执行Java程序,而是用Android自有的Android运行时(RunTime).Android 运行时包括核心库和Dalvik虚拟机两部分。如图6.4所示。

图6.4 核心库,虚拟机

2.3.4 系统库(LIBRARIES)

应用程序框架是贴近于应用程序的软件组件服务,而更底层则是Android的函数库,这一部分是应用程序框架的支撑,其架构如图6.5所示。

本科毕业设计说明书(论文)

第 10 页 共 33 页

图6.5 系统库

2.3.5 Linux

Android平台是开放,采用Linux内核则是Android平台开放性的基础。Android平台中的操作系统采用了Linux2.6版的内核,它包括了显示驱动、摄像头驱动、Flash内存驱动、Binder(IPC)驱动、键盘驱动、wifi驱动、Audio驱动以及电源管理部分。

Linux内核层为我们在软件层和硬件层建立了一个抽象层,使得应用程序开发人员无需关心硬件细节。对于手机的开发商而言,如果想要Android平台运行到自己的硬件平台上就必须通过对Linux层进行修改,通常要做的工作就是为自己的硬件便携驱动程序。

2.3 SQLite数据库

Android采用SQLite这个轻量级数据库工具来管理数据;

SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至今已经有12个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

SQLite实现了多数的SQL-92标准,包括事务,就是代表原子性、一致性、隔离性和持久性的(ACID),触发器和多数的复杂查询。不进行类型检查。你可以把字符串插入到整数列中。例如,某些用户发现这是使数据库更加有用的创新,特别是与无类型的脚本语言一起使用的时候。其他用户认为这是主要的缺点。

多个进程或线程可以同时访问同一个数据而没有问题。可以同时平行读取同一个数据库。但同一时间只能有一个进程或线程进行数据写入;否则会写入失败并得到一个错误信息(或者会自动重试一段时间,而这重试时间的长短是可以设置的)。 程序设计者还提供了一个叫做sqlite3的独立程序用来查询和管理SQLite数据库文件。SQLite的用户可以把这个程序当作如何写SQLite应用程序的示例。

本科毕业设计说明书(论文)

第 11 页 共 33 页

3 系统分析

3.1概述

系统分析是在总体规划的指导下,对某个或若干个子系统进行深入仔细地调查研究,确定新系统逻辑功能的过程。这一阶段的主要任务是由系统分析员了解每个业务流程,工作流程,广大用户的需求,运用系统开发理论、开发方法和开发技术设计出一个计算机化的信息系统。

3.1.1系统分析的原则

在系统分析中存在很多困难,为了克服困难,做好分析工作,在进行系统分析时应遵循系统分析的原则,这样才能保证分析工作能够顺利进行,系统分析的原则有:

1.逻辑设计与物理设计分开的原则 2.面向用户的原则 3.结构化分析的原则

通过实际调查并分析交流后,分析俄罗斯方块游戏系统的具体的要求,确定本手机系统的逻辑功能,以满足用户的各项要求,完成相应的各项功能,提高系统的实用水平。在近期目标完成后,该系统应该有很强的扩充性,便于在此基础上进行扩充式开发,为以后的发展及扩充打好基础。

3.1.2系统分析的方法

该系统采用以抽象和分解为手段,并且采用结构化分析方法进行系统分析,根据实际调查研究,对系统进行自顶向下的逐层分解,逐步细分,逐步求精,建立新系统的逻辑模型,这个逻辑模型将尽可能避免使用计算机术语,让其尽可能的简单化、通俗化,便于设计者和浏览者的沟通与交流经验。

结构化分析方法的基本思想是该系统采用结构化分析方法,以抽象和分解为手段,对系统进行自顶向下的逐层分解,逐步细分,逐步求精,从而达到易于理解的目的。

3.1.3系统性能要求分析

为了保证系统能够长期、安全、稳定、可靠的运行,系统应满足以下性能要求: (1)系统处理的准确性与及时性:系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,充分考虑当前和将来可能承受的工作量,使系统的处理能力

本科毕业设计说明书(论文)

和相应时间能够满足信息处理的要求。

第 12 页 共 33 页

(2)系统的可扩充性及可维护性,系统的开发过程中,应该充分考虑以后的可扩充性相当于升级。当今企业对系统的可维护性也有了相当高的关注。例如添加新功能。所以本系统采用了CS开发模式,大幅提高了系统的可扩展性及可维护性。 (3)系统的可兼容性,考虑到目前Android版本众多、设备众多,所以设计出的程序必需要求可以兼容各个主流版本。

(4)系统的可靠性, 可靠性是保证系统正常工作及抗故障、抗干扰的能力,它包括:保证系统正常工作的能力;对系统故障的预防、检测以及自动纠错的能力;出现故障时,保证系统不发生崩溃,并使系统重新恢复、重新启动的能力等.安全性是保证合法用户能够正确使用信息系统,并防止非法用户访问信息系统的能力.适应性是信息系统对外部环境和需求变化的适应能力.

3.2 系统可行性分析

可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是对进行了一次较大压缩简化后的系统进行分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。

系统的可行性分析主要包括经济上的可行性,技术上的可行性,操作上的可行性和法律上的可行性。

经济可行性

目标系统开发经济需求的比较低,加上具有成熟的Android平台以及十分普及手机设备,所以在软硬件的支出上十分有限。而且,目标系统并是十分的复杂,开发的周期较短,人员经济支出有限。当系统开发成后,通过测试和、试运行和实际应用后,将很大程度上提高移动公交查询系统的科学性和高效性,在为人们带来便利的同时,也为系统的进一步推广、创新创造了条件,这带来的经济回报将远超过支出,并且最重要的一点是通过该系统的开发,可以使我们进一步理解软件工程思想和软件开发流程,为从事软件开发工作打下很好的基础,从长远利益来考虑,本课题的设计开发还是具有相当大的经济可行性的。

技术可行性

本系统使用Android技术进行开发,发展到现在,Android已经算是一个较成熟的平台

本科毕业设计说明书(论文)

是完全可以胜任这个平台的开发。

第 13 页 共 33 页

了,现在有越来越多的企业及技术人员选择它作为开发平台。因此,在技术上.NET

Android 开发平台是由谷歌与开放手机联盟合作开发的一个开放、自由的移动终端平台,它由操作系统、中间件、应用软件三部分组成。该平台备有完善的程序开发环境,包括模拟器、除错工具、程序执行所耗用存储器、性能评介等功能。

操作可行性

本系统用户只要有一台Android手机,就可以使用了,系统是由的操作都是用户熟悉的选择框或者按钮等等。所有的操作通过手机就可以完成,,用户不需培训,只要稍微提示一下即可。因此,在操作使用上,本系统简单、方便,易于使用户接受,因而是十分可行的[3]。

⑷法律可行性

由于本系统是在相关法律法规下实施完成的,所以不存在任何法律问题,在法律上是完全可行的。

综合考虑经济、技术、操作和法律等方面的因素,该系统可以立即开始进行。

3.3 系统算法功能需求

对于俄罗斯方块,其功能描述如下:

1.游戏区域上方不断地出现预定义形状的方块,下坠方块可以通过旋转改变其显示形状,并且不断地往下坠,直到它接触到游戏区域底部或者其他之前已经累叠起的下坠方块。

2.当一个下坠方块到达游戏区域底部或者接触到其他之前已经累叠起的下坠方块后,其位置则确定下来并占有该空间的位置区域。当游戏区域的某一行被下坠方块完全填充,则消除该行的所有下坠方块,垒在其上的方块将按照一定的算法掉下代替改行空间。

3.游戏的结束是以下坠方块的顶部到达游戏区域顶部作为判断依据。 4.另外,在游戏区域产生一个新的方块的一瞬间,立即产生下一个下坠方块的形状并在提示区域的左上方有预先提示。同时,在游戏界面的右下方,将显示玩家所得的分数和游戏的级别。每当游戏玩家成功消除一行方块时,将按照一定的算法计算出所得分数,并修改游戏状态区域的分数的数值,达到一定的分数将修改游戏的级别。功能需求如表格3-1所示: 功能 简介 本科毕业设计说明书(论文)

顺时针旋转 逆时针旋转 绘制转块 擦除矩形 左移动 右移动 下移动 丢下砖块 计分 第 14 页 共 33 页

顺时针旋转转块 逆时针旋转转块 指定画板上绘制转块 指定画板上擦除矩形 左移动转块 右移动转块 下移动转块 在画板上丢下砖块 根据玩家消去的行数计分 表3-1 系统功能需求 游戏界面需求, 良好的用户界面有提示显示和分数显示。将整体界面分为三部分,左侧半部分用来存放俄罗斯方块是游戏的活动区用户操作的图形变化在这个主界面区完成。右上侧部分显示下一次要产生的俄罗斯方块形状,以便用户预先知道,增加游戏的可玩性。右侧下半部分用来显示用户的分数和当前等级以便让用户有成就感增加可玩性。

3.4 系统算法与流程分析

对于方块在某一瞬间的位置标识我们采用一个4×2的小数组标识出来,即用4个存储单位空间存储当前下坠物的每一子块的位置也就是说用4个存储单位空间存储当前下坠物的每一子块的位置来对整个下坠物件的位置进行标识而每个存储空间的大小就是一个典的坐标值(x,y),而每个方块按照从左到右的方式进行编号,如图3-2:

图3-2

并且在编号过程中对于同一列的方块实行从上到下进行编号方块表示方法即四个小方块的坐标设定,其中一个方块是原点坐标为(0,0)右侧方块坐标(1,0),下面的方块坐标(0,1)以此类推。

本科毕业设计说明书(论文)

第 15 页 共 33 页

从开始判断是否到底底部,到达则做销行操作,然后生成下一个下坠物将新的下坠物代替旧的下一个下坠物,将旧的下坠物当做当前的下坠物下到底部判断是否做销行操作,然后判断游戏是否结束,未结束则继续新一轮的生产方块,若方块达到了顶部,占满了空间则游戏结束。流程图如图3-3所示

游戏开始 显示方块于屏幕中 检查方块在屏幕上 是否有阻碍发生 否 是 游戏结束 产生控制方块下 否 降的执行信息 接受按钮的控制信息 方块是否无法下移 是 方块移动时是否有阻碍 是 1检查满行。 2删除满行。 3重新装载方块。 移动方块 否

图3-3 游戏规则流程图

本科毕业设计说明书(论文)

4 系统设计

4.1 系统设计目标

第 16 页 共 33 页

在系统分析的基础上,设计出能满足预定目标的系统的过程。系统设计内容主要包括:确定设计方针和方法,将系统分解为若干子系统,确定各子系统的目标、功能及其相互关系,决定对子系统的管理体制和控制方式,对各子系统进行技术设计和评价,对全系统进行技术设计和评价等。

本系统是设计目标是建立一个基于Android的俄罗斯方块游戏软件,基本可以的满足人们对游戏的需求,系统具有上手简单、操作方便快捷的特点。

用户界面友好、操作简单,每一步骤的操作都经过精心的设计,将复杂的统计运算过程隐藏于简单的操作之下,系统的设计能降低使用前的培训、实施和使用中的维护时间。

通过合理而先进的网络设计及软、硬件的优化选型,足可保证系统的可靠性与容错性。系统以用户需求为目标,以方便用户为原则,处处为使用者着想。

4.2 系统功能模块设计

本系游戏分主界面、游戏界面、帮助界面和排行榜界面,而游戏模块中又可以分为游戏规则控制模块、游戏暂停/开始控制模块等等,系统的功能模块架构设计如图4.1所示:

本科毕业设计说明书(论文)

第 17 页 共 33 页

图 4.1 系统功能模块图

4.3 工程文件结构设计

在程序开发阶段,首先确定“即Android的俄罗斯方块游戏”的工程名称为Tetris,根据程序模块设计的内容,建立Tetris项目, Tetris项目,的文件结构如图4.2所示:

本科毕业设计说明书(论文)

第 18 页 共 33 页

图 4.2 工程结构图

为了使代码文件结构更加清晰, Tetris工程设置了多个命名空间,分别保存了用户界面、数据适配器、常用类库和实体多个包,源代码的名称以及说明如表4.3所示: 包名称 文件名 说明 主界面视图 游戏主界面视图 com.miebo.android.tetris.activity MainActivity.java com.miebo.android.tetris.activity GameActivity.java 本科毕业设计说明书(论文)

com.miebo.android.tetris.activity HelpActivity.java com.miebo.android.tetris.activity RankActivity.java com.miebo.android.tetris.activity RankDatabase.java com.miebo.android.tetris.activity RefreshHandler.java com.miebo.android.tetris.activity TetrisView.java com.miebo.android.tetris.activity DrawTool.java 表 4.3 系统代码结构

第 19 页 共 33 页

操作帮助界面视图 排行榜界面视图 数据库服务 游戏控制 游戏规则控制类 绘制类 Android的资源文件保存在/res的子目录中。其中、/res/anim目录中保存的是产生动画效果的XML文件,/res/drawable/目录中保存的是图像文件,/res/values目录中保存的是用来自定义字符串和颜色的文件,/res/xml目录中保存的是XML格式的数据文件。所有在程序开发阶段可以被调用的资源都保存在这些目录中,具体每个资源文件的用途可以参考表4.4: 资源目录 Drawable Layout 文件名 btn_comm_selector.xml layout_main.xml Layout_help.xml layout_rank.xml menu main_menu.xml 说明 按钮资源文件 主界面布局文件 操作帮助文件 排行榜布局文件 文件管理上下文菜单布局文件 values styles.xml colors.xml strings.xml 样式资源文件 颜色资源文件 字符串资源文件 表 4.4 资源文件名称及用途

本科毕业设计说明书(论文)

5 系统编码开发

5.1系统主界面

第 20 页 共 33 页

该界面为用户一进入俄罗斯游戏系统第一个看到的界面,该界面通过LinearLayout和RelativeLayout等布局组件来实现控件的布局,本界面涉及到的组件包括Button、CheckBox等。

该界面主要包括的按钮有继续上次游戏、新游戏、帮助、排行榜和退出等,选择不同的按钮可以进入不同的界面,例如选择“新游戏”可以开始一个新的游戏。

同时该界面也包含了一个声音开关按钮,用户可以通过该按钮来控制是否播放声音。

具体的实现效果如图5.1所示:

图 5.1 游戏主界面

5.2游戏主界面

本科毕业设计说明书(论文)

第 21 页 共 33 页

当用户在系统主界面选择“新游戏”或“继续上次游戏”后,系统会自动跳转进入本界面,该界面即为游戏控制界面,玩家可以在本界面玩游戏。

游戏规则是系统上方会不断下落各种形状的方块,玩家不断拼凑组合使方块有规则地组合起来,并由此获取分数的递增,当分数达到一定要求时,系统会自动把当前等级提高一级,越高级方块下落的速度会也快,游戏的难度也因此会增加。

具体的实现效果如图5.2所示:

图 5.2 游戏控制主界面

5.3排行榜界面开发

在该界面用户也可查看到游戏排行榜信息,排行榜数据是存储到SQLite数据库当中的,SQLite为Android系统自带并完全支持的小型数据库,特别适用于嵌入式设备当中。

具体的实现效果如图5.3所示:

本科毕业设计说明书(论文)

第 22 页 共 33 页

图 5.3排行榜界面

5.4声音控制实现

为了给玩家移动方块提供声音提醒功能,系统需要实现声音文件的播放,这一过程是通过Android系统提供的MediaPlayer接口来实现的。

当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后,它就处于Idle状态。当调用了release()方法后,它就处于End状态。这两种状态之间是MediaPlayer对象的生命周期。

本科毕业设计说明书(论文)

第 23 页 共 33 页

6 系统测试

6.1测试的重要性

软件的测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。

事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。

在实践中,软件测试的困难常常使人望而却步或敷衍了事,这是由于对测试仍然存在一些不正确的看法和错误的态度,这包括:

(1)认为测试工作不如设计和编码那样容易取得进展难以给测试人员某种成就感;

(2)以发现软件错误为目标的测试是非建设性的,甚至是破坏性的,测试中发现错位是对责任者工作的一种否定;

(3)测试工作枯燥无味,不能引起人们的兴趣; (4)测试工作是艰苦而细致的工作;

(5)对自己编写的程序盲目自信,在发现错误后,顾虑别人对自己的开发能力的看法。

本科毕业设计说明书(论文)

软件产品的质量。

第 24 页 共 33 页

这些观点对软件测试工作是极为不利的,必须澄清认识、端正态度,才可能提高

6.2测试的目的

如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。如果测试目的是为了给最终用户提供具有一定可信度的质量评价,那么测试就应该直接针对在实际应用中会经常用到的商业假设。

在谈到软件测试时,许多人都引用Grenford J. Myers在《The Art of Software Testing》一书中的观点:

(1)软件测试是为了发现错误而执行程序的过程; (2)测试是为了证明程序有错,而不是证明程序无错误; (3)一个好的测试用例是在于它能发现至今未发现的错误; (4)一个成功的测试是发现了至今未发现的错误的测试。

这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。

首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。

本科毕业设计说明书(论文)

7 总结和展望 第 25 页 共 33 页

本系统较完整的实现了基于Android的俄罗斯方块游戏系统的设计与实现基本功能。完成了基本的俄罗斯游戏控制功能。

从本系统的开发过程中,我受益匪浅。首先,我认识到了代码规范的重要性,特别是在一些大型项目中,用到的函数可能有数百个,如果编写的代码不规范会给后期的检查带来极大的麻烦。而且完整的代码测试也非常重要,有些错误可能在很久以后才能发现。其次,我意识到了软件设计的重要性,原来接触的项目往往是快速开发类型的,几乎不需要在软件的逻辑设计上花费太多时间,往往可以边开发边进行下一步的设计。但是这一次我意识到做软件设计很重要,当初一个设计没注意,可能造成后来的编码大面积的返工。最后就是调试方法的重要性,系统的调试过程要比开发过程繁琐的多。每个操作、每次向服务器提交请求,其实都包括了很多小段代码的执行,如果不能够采用正确的调试方法,就很难找出程序中的错误。

系统开发过程中主要遇到了下列问题:忽略了每次向服务器提交请求后客户端页面都将重新加载的情况,以致无法将预期的数据提交到服务器。

与当今市场上已有的系统相比,本系统没有做到像它们一样适合各种各样的用户,而只是适合小型企业用户,适用范围较为局限,这是本系统的有待改进之处。

本科毕业设计说明书(论文)

第 26 页 共 33 页

结束语

这次毕业设计的时间虽然不算太长,但使我对很多东西有了更深刻的认识。总结如下:

·查阅资料和阅读相关文献的重要性。 ·向老师和同学请教的重要性。

·勤动手的重要性,在以前我总是有“只学不练”的倾向,导致动手能力得不到提高,在这次的一次次编写代码、调试代码的过程中,我才明白“代码不是写出来的,是调出来的”的道理。

·对待任何事情都要有耐心和恒心,遇到问题要冷静地思考,积极找出症结所在,逐个解决。

转眼本科生阶段就要划上句号了。通过这次毕业设计,我更深刻的认识到了教学实践在大学课程中的重要性,同时也发觉到了自己在学习方面存在的不足之处,在以后的学习中我会努力改进这些不足、不断提高自己的动手实践能力。

如果想让本系统应用起来,可能功能还有所欠缺,还有待完善,有些功能还没有实现,可能本系统还达不到商业的水平。但是毕竟是一个毕业设计,时间和本人的知识面都很有限,不过我相信只要不断地锻炼自己的实际开发能力及动手能力,积极的吸收最新技术,不断摸索不断改进,不断发现问题,解决问题,那么一切困难都会将会迎刃而解,系统功能肯定可以更完善,稳定性可以跟好,效率可以更高的。

本科毕业设计说明书(论文)

第 27 页 共 33 页

致 谢

毕业设计终于完成了,想起过去的几个月里,首先我要地感谢我的导师吴许俊老师,在这几个月中对我的悉心关怀和指导才让我如此顺利的完成了毕业设计。在我论文写作期间给予我许多宝贵的意见和建议。在设计之初我对IPv6过渡技术是不懂的,但他仍给我们认真和耐心的讲解,从实验的配置到完成都是他陪着我们度过的。他作风严谨、学识渊博、兢兢业业和一丝不苟的态度让我深有感触。在此,我向他表示崇高的敬意和衷心的感谢。

其次,我要衷心感谢和我一个组的其他同学,正是有他们的帮助和指导才使我能够顺利的完成设计。

在我大学期间我也要感谢我的同学,他们不但是我学习的朋友,更是我生活上伴我风雨同舟的同伴。只有有了这么多的老师和同学的帮助才能帮我完成毕业论文才能给我人生中最重要四年一个圆满的结局。

最后,我要感谢我的父母,这么年来他们一直给我鼓励和支持。

本科毕业设计说明书(论文)

第 28 页 共 33 页

参 考 文 献

[1]刘仙艳;移动终端开放平台—Android[J];信息通信技术;2011(4)

[2]张仕成;基于Google Android平台的应用程序开发与研究[J];电脑知识与技术;2009(5);59-62

[3]公磊,周聪;基于Android的移动终端应用程序开发与研究[J];计算机与现代化;2008(8);85-89

[4]Shane Conder;Android Wireless Application Development[M];Boston:Addison-Wesley,2010

[5]Haseman Chris;Android Essentials[M];Apress:the Expert’s Voice;2008 [6]杨丰盛;Android应用开发揭秘[M];北京:机械工业出版社;2010

[7]张利国,代闻,龚海平;Android移动开发案例详解[M];北京:人民邮电出版社;2010

[8]叶达峰;Eclipse编程技术与实例[M];北京:人民邮电出版社;2006

[9]Shane Condor,Lauren Decry;Android移动应用开发从入门到精通[M];北京:人民邮电出版社;2010

[10]马越;Android的架构与应用[D];北京:中国地质大学(北京)硕士学位论文;2008:9-20

本科毕业设计说明书(论文)

附录 package com.miebo.android.tetris.activity; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Message; import android.util.Log; import android.view.KeyEvent; import android.view.View;

import com.miebo.android.tetris.other.Court; import com.miebo.android.tetris.other.DrawTool; import com.miebo.android.tetris.other.ResourceStore; public class TetrisView extends View implements Runnable { public final static int SCREEN_WIDTH = 320; public final static int SCREEN_HEIGHT = 455; final int STATE_MENU = 0; final int STATE_PLAY = 1; final int STATE_PAUSE = 2; final int STATE_OVER = 3;

public static final int MAX_LEVEL = 6; public static final String TAG = \ public static final String DATAFILE = \ int mGamestate = STATE_PLAY; int mScore = 0; int mSpeed = 1; int mDeLine = 0;

boolean mIsCombo = false; //

第 29 页 共 33 页

本科毕业设计说明书(论文)

boolean mIsPaused = false; boolean mIsVoice = true; long mMoveDelay = 600; long mLastMove = 0;

// int mAtPause = OPTION_RESUME; private Context mContext = null; private final Paint mPaint = new Paint(); RefreshHandler mRefreshHandler = null; // RefreshHandler mRefreshHandler = null; TileView mCurrentTile = null; TileView mNextTile = null; Court mCourt = null;

ResourceStore mResourceStore = null; MusicPlayer mMPlayer = null; public TetrisView(Context context) { }

protected void init(Context context) { }

mContext = context;

mCurrentTile = new TileView(context); Log.i(\mNextTile = new TileView(context); mCourt = new Court(context);

mRefreshHandler = new RefreshHandler(this); mResourceStore = new ResourceStore(context); mMPlayer = new MusicPlayer(context); setLevel(1);

mPaint.setAntiAlias(true); mPaint.setColor(Color.RED); setFocusable(true); new Thread(this).start(); super(context); init(context);

第 30 页 共 33 页

本科毕业设计说明书(论文)

public void logic() {

}

public void startGame() {

mGamestate = STATE_PLAY; mCourt.clearCourt();

mCurrentTile = new TileView(mContext); mNextTile = new TileView(mContext); // mSpeed = speed choosed // mScore

switch (mGamestate) { case STATE_MENU:

//

mGamestate = STATE_PLAY; break;

第 31 页 共 33 页

case STATE_PLAY:

// startGame(); playGame(); break;

case STATE_PAUSE:

// if(mAtPause == OPTION_RESUME) // {

// mIsPaused = false;

// mGamestate = STATE_PLAY; // break; // }

// if(mPusedChoose = ) break;

case STATE_OVER:

// startGame();

// mGamestate = STATE_PLAY; break;

default: }

本科毕业设计说明书(论文)

}

public void playGame() {

}

if (mCourt.isGameOver()) { }

int line = mCourt.removeLines(); if (line > 0) { }

mDeLine += line; countScore(line);

mCurrentTile = mNextTile;

mNextTile = new TileView(mContext); mIsCombo = false;

mMPlayer.playBombVoice(); mGamestate = STATE_OVER; return;

long now = System.currentTimeMillis(); if (now - mLastMove > mMoveDelay) {

if (mIsPaused) { }

if (mIsCombo) {

mCourt.placeTile(mCurrentTile); // ////

mMPlayer.playMoveVoice(); return;

// mLine setLevel(1); mScore = 0; mDeLine = 0; mIsPaused = false; mIsCombo = false; playGame();

第 32 页 共 33 页

本科毕业设计说明书(论文)

}

private void countScore(int line) { } @Override

protected void onDraw(Canvas canvas) {

switch (line) { case 1:

mScore += 100; break; }

moveDown(); mLastMove = now;

第 33 页 共 33 页

case 2:

mScore += 300; break;

case 3:

mScore += 600; break;

case 4:

mScore += 1000; break;

}

default:

if (mScore >= 2000 && mScore < 4000) {

setLevel(2);

} else if (mScore >= 4000 && mScore < 6000) {

setLevel(3);

} else if (mScore >= 6000 && mScore < 8000) {

setLevel(4);

} else if (mScore >= 8000 && mScore < 10000) {

setLevel(5);

} else if (mScore >= 10000) { }

setLevel(6);

本科毕业设计说明书(论文)

}

public boolean isGameOver() { } @Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

switch (keyCode) {

case KeyEvent.KEYCODE_DPAD_UP:

if (mGamestate == STATE_PLAY) {

if (!mIsPaused) { }

rotate();

mMPlayer.playMoveVoice();

return mCourt.isGameOver(); switch (mGamestate) { case STATE_MENU:

paintMenu(canvas); break;

第 34 页 共 33 页

case STATE_PLAY:

paintGame(canvas); break;

case STATE_PAUSE:

paintPause(canvas); break;

case STATE_OVER:

paintOver(canvas); break;

default: }

} else if (mGamestate == STATE_PAUSE) { } else if (mGamestate == STATE_MENU) { } break;

case KeyEvent.KEYCODE_DPAD_DOWN:

本科毕业设计说明书(论文)

} break;

} break;

if (mGamestate == STATE_PLAY) {

if (!mIsPaused) { }

moveDown();

mMPlayer.playMoveVoice();

第 35 页 共 33 页

} else if (mGamestate == STATE_PAUSE) { } else if (mGamestate == STATE_MENU) {

case KeyEvent.KEYCODE_DPAD_LEFT:

if (mGamestate == STATE_PLAY) {

if (!mIsPaused) { }

moveLeft();

mMPlayer.playMoveVoice();

} else if (mGamestate == STATE_PAUSE) { } else if (mGamestate == STATE_MENU) { } break;

case KeyEvent.KEYCODE_DPAD_RIGHT:

if (mGamestate == STATE_PLAY) {

if (!mIsPaused) { }

moveRight();

mMPlayer.playMoveVoice();

} else if (mGamestate == STATE_PAUSE) { } else if (mGamestate == STATE_MENU) {

case KeyEvent.KEYCODE_ENTER: case KeyEvent.KEYCODE_DPAD_CENTER:

本科毕业设计说明书(论文)

; }

private void rotate() {

// check if (!mIsCombo) }

return super.onKeyDown(keyCode, event);

if (mGamestate == STATE_PLAY) {

if (!mIsPaused) { }

fastDrop();

mMPlayer.playMoveVoice();

第 36 页 共 33 页

} else if (mGamestate == STATE_PAUSE) { } else if (mGamestate == STATE_MENU) { } break;

case KeyEvent.KEYCODE_S:

if (mGamestate == STATE_PLAY) {

mIsPaused = true;

} else if (mGamestate == STATE_PAUSE) {

mIsPaused = false;

} else if (mGamestate == STATE_MENU) { } break;

case KeyEvent.KEYCODE_SPACE:

mIsPaused = !mIsPaused; if (mIsPaused) {

mRefreshHandler.pause();

} else { } break;

mRefreshHandler.resume();

default:

本科毕业设计说明书(论文)

}

private void moveDown() { }

private void moveLeft() { }

private void moveRight() { }

private void fastDrop() { }

private void paintMenu(Canvas canvas) { }

private void paintGame(Canvas canvas) {

mCourt.paintCourt(canvas); /*

if (!mIsCombo) { }

mCurrentTile.fastDropOnCourt(mCourt); mIsCombo = true; if (!mIsCombo) { }

mCurrentTile.moveRightOnCourt(mCourt); if (!mIsCombo) { }

mCurrentTile.moveLeftOnCourt(mCourt); if (!mIsCombo) { }

if (!mCurrentTile.moveDownOnCourt(mCourt))

mIsCombo = true;

mCurrentTile.rotateOnCourt(mCourt);

第 37 页 共 33 页

* DrawTool.paintImage(canvas, mResourceStore.getMenuBackground(), 0, * 0); DrawTool.paintImage(canvas, mResourceStore.getMenu(), 0, * SCREEN_HEIGHT / 2 - mResourceStore.getMenu().getHeight() / 2); */

本科毕业设计说明书(论文)

第 38 页 共 33 页

mCurrentTile.paintTile(canvas); // mNextTile.paintTile(canvas); mPaint.setTextSize(20); paintNextTile(canvas); paintSpeed(canvas); paintScore(canvas); paintDeLine(canvas);

}

private void paintNextTile(Canvas canvas) { int i, j;

for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { if (mNextTile.mTile[i][j] != 0) { DrawTool.paintImage( canvas,

mResourceStore.getBlock(mNextTile.getColor() - 1),

(int) (Court.BEGIN_DRAW_X

+

getBlockDistance(Court.COURT_WIDTH)

getBlockDistance((float) (i + 0.5))),

(int) (getBlockDistance((float) (j + 0.5))));

}

}

}

}

private void paintSpeed(Canvas canvas) { mPaint.setColor(Color.BLUE);

canvas.drawText(\等级:\

+ getRightMarginToCourt(), getBlockDistance(9), mPaint);

mPaint.setColor(Color.RED);

canvas.drawText(String.valueOf(mSpeed), getBlockDistance(Court.COURT_WIDTH) + 2

* getRightMarginToCourt(), getBlockDistance(11), mPaint);

}

+

本科毕业设计说明书(论文)

private void paintScore(Canvas canvas) { }

private void paintDeLine(Canvas canvas) { }

private float getBlockDistance(float blockNum) { }

private float getRightMarginToCourt() { }

private void paintPause(Canvas canvas) { }

private void paintOver(Canvas canvas) {

paintGame(canvas); Paint paint = new Paint(); paint.setTextSize(40); paint.setAntiAlias(true); return (float) 10.0;

return blockNum * Court.BLOCK_WIDTH; mPaint.setColor(Color.BLUE); mPaint.setColor(Color.BLUE);

canvas.drawText(\得分:\

+ getRightMarginToCourt(), getBlockDistance(13), mPaint);

第 39 页 共 33 页

mPaint.setColor(Color.RED);

canvas.drawText(String.valueOf(mScore),

getBlockDistance(Court.COURT_WIDTH) + 2

* getRightMarginToCourt(), getBlockDistance(15), mPaint);

canvas.drawText(\消去行数:\

+ getRightMarginToCourt(), getBlockDistance(17), mPaint);

mPaint.setColor(Color.RED);

canvas.drawText(String.valueOf(mDeLine),

getBlockDistance(Court.COURT_WIDTH) + 2

* getRightMarginToCourt(), getBlockDistance(19), mPaint);

本科毕业设计说明书(论文)

} @Override public void run() { }

public void setLevel(int level) { }

public void setVoice(boolean isVoice) { }

public void restoreGame() {

Properties pro = new Properties(); try {

FileInputStream in = mContext.openFileInput(DATAFILE); pro.load(in); mIsVoice = isVoice;

mMPlayer.setMute(!mIsVoice); mSpeed = level;

mMoveDelay = (long) (600 * (1.0 - mSpeed / 7.0)); // TODO Auto-generated method stub

while (!Thread.currentThread().isInterrupted()) { }

Message ms = new Message();

ms.what = RefreshHandler.MESSAGE_REFRESH; this.mRefreshHandler.sendMessage(ms); try {

paint.setARGB(0xe0, 0xff, 0x00, 0x00);

canvas.drawText(\

getBlockDistance(Court.COURT_HEIGHT / 2 - 2), paint);

第 40 页 共 33 页

// DrawTool.paintImage(canvas,mResourceStore.getGameover(),0,SCREEN_HEIGHT/2 // - mResourceStore.getGameover().getHeight()/2 );

Thread.sleep(/* RefreshHandler.DELAY_MILLIS */mMoveDelay);

} catch (InterruptedException e) { }

Thread.currentThread().interrupt();

本科毕业设计说明书(论文)

}

private void restoreCourt(Properties pro) { }

private void restoreTile(Properties pro, TileView tile) {

int[][] matrix = tile.getMatrix(); int i, j;

for (i = 0; i < 4; i++) {

for (j = 0; j < 4; j++) {

matrix[i][j] = Integer.valueOf(pro.get(\

int[][] matrix = mCourt.getMatrix(); int i, j;

for (i = 0; i < Court.COURT_WIDTH; i++) { }

for (j = 0; j < Court.COURT_HEIGHT; j++) { }

matrix[i][j] = Integer.valueOf(pro.get(\

.toString());

in.close();

} catch (IOException e) { }

mGamestate = Integer.valueOf(pro.get(\mSpeed = Integer.valueOf(pro.get(\setLevel(mSpeed);

mScore = Integer.valueOf(pro.get(\mDeLine = Integer.valueOf(pro.get(\mIsVoice = Boolean.valueOf(pro.get(\oice\mIsCombo = Boolean.valueOf(pro.get(\mIsPaused = Boolean.valueOf(pro.get(\restoreCourt(pro);

restoreTile(pro, mCurrentTile); restoreTile(pro, mNextTile);

Log.i(TAG, \return;

第 41 页 共 33 页

本科毕业设计说明书(论文)

public void saveGame() {

try {

saveCourt(pro);

saveTile(pro, mCurrentTile); saveTile(pro, mNextTile); Properties pro = new Properties();

pro.put(\pro.put(\pro.put(\pro.put(\Boolean b = new Boolean(mIsVoice); pro.put(\oice\b = new Boolean(mIsCombo); pro.put(\b = new Boolean(mIsPaused); pro.put(\ }

tile.setColor(Integer.valueOf(pro.get(\tile.setShape(Integer.valueOf(pro.get(\tile.setOffsetX(Integer.valueOf(pro.get(\tile.setOffsetY(Integer.valueOf(pro.get(\

}

.toString());

第 42 页 共 33 页

FileOutputStream stream = mContext.openFileOutput(DATAFILE,

Context.MODE_WORLD_WRITEABLE);

pro.store(stream, \stream.close();

} catch (IOException e) {

Log.i(TAG, \return;

本科毕业设计说明书(论文)

}

private void saveCourt(Properties pro) { }

private void saveTile(Properties pro, TileView tile) { }

public void onPause() { }

mRefreshHandler.pause(); mIsPaused = true;

int[][] matrix = tile.getMatrix(); int i, j;

for (i = 0; i < 4; i++) { }

pro.put(\pro.put(\pro.put(\pro.put(\

for (j = 0; j < 4; j++) { }

pro.put(\

int[][] court = mCourt.getMatrix(); int i, j;

for (i = 0; i < Court.COURT_WIDTH; i++) { }

for (j = 0; j < Court.COURT_HEIGHT; j++) { }

pro.put(\

}

第 43 页 共 33 页

本科毕业设计说明书(论文)

public void onResume() { }

public void freeResources() { mMPlayer.free();

mRefreshHandler.resume(); mIsPaused = false;

第 44 页 共 33 页

} }

本文来源:https://www.bwwdw.com/article/cggp.html

Top