基于Android的推箱子游戏设计论文_第1页
基于Android的推箱子游戏设计论文_第2页
基于Android的推箱子游戏设计论文_第3页
基于Android的推箱子游戏设计论文_第4页
基于Android的推箱子游戏设计论文_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、. . . . 毕业设计(论文)说明书题目: 基于Android的推箱子游戏设计摘 要推箱子游戏是一款古老的游戏,其设计目的是训练人的逻辑思维能力。随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发出了各种版本、各种类型的推箱子游戏,这其中也包括很多手机版本的实现。随着Android手机的迅猛发展,Android应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活容、提供快捷的资讯起着不可忽视的作用。本论文着眼于Android平台的应用,开发一款可用的手机游戏程序推箱子。 本文首先介绍基于Android平台应用软件开发的背景,阐述了Android系统的现状与发展情况;接着介绍A

2、ndroid平台的搭建;然后通过一个较完整的软件开发周期,采用Java语言与Eclipse开发工具,从需求分析到游戏设计、实现、调试,最终实现了推箱子游戏。并经过严格的测试,可以在模拟器上正常使用。关键词:Android;Java;推箱子游戏ABSTRACTPush Box Game is one of the ancient games,the design objective of the game is to train peoples logical thinking ability.Along with the development of computer games, a lot

3、 of programming enthusiasts based on the idea of the game developed a variety of versions,all types of Push Box Game,which also include many mobile phone versions realization. With the implementation of Android technology on mobile equipment, increment of capital on communication service exhibits it

4、s force on peoples everyday life, providing them ever fast information just in hand. This dissertation focuses on implementation of Android and has developed a game suite run on mobile phonesPush Box Game.At first, This paper will introduce background of application development which base on Android

5、 platform, and describe the status and development of Android system; then introduce the way how to set up the environment of Android, and then via a more complete software development cycle, using the language of Java and the eclipse development tools,from demand analysis to the game design, implem

6、entation, commissioning, eventually achieve a Push Box Game. The game has been tested rigorously, so it can be used safely.Keywords:Android;Java;Push Box Game9 / 37目 录第一章 绪论11.1 课题研究背景11.2 课题来源与意义11.3 国外发展现状11.4 本文研究主要容21.5 本文章节安排2第二章 Android平台搭建32.1 工具介绍32.1.1 Android简介32.1.2 Java简介42.2 开发环境52.3 开发

7、环境变量配置52.3.1 JDK配置52.3.2 SDK配置72.3.3 Eclipse配置82.4 应用环境8第三章 游戏设计93.1 游戏需求分析93.2 游戏设计93.2.1 系统设计思想93.2.2 游戏总体设计93.2.3 系统功能模块设计103.2.4 游戏的类框架设计103.2.5 算法的设计10第四章 游戏的实现124.1 欢迎界面的实现124.2 菜单界面的实现134.2.1 开始游戏134.2.2 声音控制144.2.3 游戏说明144.2.4 退出游戏154.3 游戏界面的实现154.3.1 地图类的实现164.3.2 角色类的实现174.3.3 键盘监听线程的实现184

8、.3.4 角色移动线程的实现18第五章 软件测试195.1 测试方案与其执行195.2 测试步骤195.3 本章小结20第六章 总结21参考文献22外文资料 中文译文 致第一章 绪论1.1 课题研究背景在我们的生活中有许多的游戏,但是游戏不同,它也会给玩家带来不同的感受和生活理念。游戏是我们日常生活的一个必不可少的娱乐项目,也带动了游戏相关产业市场的发展。游戏平台经过从游戏机到电视游戏,然后又到pc游戏,手机游戏,中间经历了很多的技术更新和变革。但随着新技术的发展和我们生活水平的提高,手机开始逐渐普与,因为手机是非常小巧便捷,所以它成为我们日常生活中必备通讯工具。基于手机平台的游戏也就拥有了巨

9、大的市场空间,随着3G的开通和应用,手机游戏必然会迎来新的一轮游戏热潮1!1.2 课题来源与意义推箱子游戏是一款古老的游戏,其设计目的是训练人的逻辑思维能力。游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发出了各种版本、各种类型的推箱子游戏。这其中也包括很多手机版本的实现,随着Android手机终端的逐渐热销,Android也引起众多手机应用程序开发商的关注,由于Android基于Linux核

10、且具有开源、免费的特性,它迅速得到广大爱好者以与许多厂商的支持,基于Android所开发的手机游戏拥有巨大的潜力已成为行业共识。本文主要研究在Android手机上开发一款推箱子游戏2。1.3 国外发展现状Android是由Google为首的OHA(Open Handset Alliance)推出的一款开放的嵌入式操作系统平台。从2008年推出到现在Android正以前所未有的速度聚集着来自世界各地的开发者,越来越多的创意被应用到Android应用程序的开发中,大有席卷整个手机产业的趋势。Android系统,是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统名称,该平

11、台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。Android 的核心系统服务依赖于 Linux核,如安全性,存管理,进程管理,网络协议栈和驱动模型。由于Android带有相当浓郁的Linux血统这也就意味着他拥有开源Linux的众多优点:安全、运算速度快、易于开发等等3。正因为Android具有上述的优点,所以它在国具有相当强劲的竞争优势。青年网络的主要负责人长华先生说到:Android作为一款十分优秀的移动开发平台十分适合国的开发环境。尤其是中小企业开发团队低成本以与源代码的分享可以为企业节省大量资金,这对于中小企业来说无疑是最大的诱惑。同

12、时一个资深的Android开发爱好者曾说过:如果你是个人开发爱好者,那么Android就是Google为你量身打造的,开源才是王道,Android才是未来的主宰4。伴随着Google Android操作系统的盛行,国外的开发团队也逐渐的壮大起来了,基于Android SDK的系统开发,基于Android应用的开发等已逐渐倍受大家关注,而手机游戏开发历来是移动开发中分量最重的部分,面对如此火爆的Android市场自然也不甘示弱,由于Android的应用层开发是基于Java的开发,所以必有其可以快速移植J2ME开发的游戏的优势,但是移植的游戏必定也不能发挥Android操作系统独特的特性。所以目前

13、基于Android游戏开发的市场还是不够成熟的,面对这种情况,在了解Android SDK基础上,本课题开发的就是一款完全适应于Android操作系统的推箱子益智游戏。1.4 本文研究主要容本游戏分三个模块设计与实现:欢迎动画界面的设计与实现,菜单界面的设计与实现,游戏界面的设计与实现。游戏运行后首先进入欢迎动画界面,动画结束后,进入菜单界面,在菜单界面上有四种菜单供用户选择。游戏的过程中需要在适当的地方添加上音效,并且可以对音效进行开与关的设置。还需要为游戏添加说明界面,简单介绍游戏的基本功能与玩法。游戏需要设计适当的难度,使玩家能够经过努力完成游戏。1.5 本文章节安排 第一章是绪论,阐述

14、了本论文的选题背景、来源和意义,以与国外发展现状,并对本文研究的主要容进行简述。 第二章介绍Android平台的搭建。第三章介绍开发此项目所做的需求分析和游戏设计。第四章介绍游戏实现的功能。第五章介绍游戏的测试。第六章对本次毕业设计的总结。第二章 Android平台搭建本章主要介绍项目需要的开发工具,与如何构建Android开发环境,包括JDK、Android SDK、Eclipse的配置。2.1 工具介绍2.1.1 Android简介Android是基于Linux核的操作系统,Android系统具有开放性、应用程序无界限、应用程序是在平等的条件创建的、应用程序可以轻松地嵌入网络和应用程序可以

15、并行运行等特点。Android的系统架构共分为4层,由高到低分别是应用层、应用框架层、系统运行库层和linux核层。Android应用程序是由四个模块构造:Activity,Intent,Content Provider,Service5。当然也不是每个Android应用程序都必须由这四部分组成,可以根据开发者的需求进行组合。但任何一个应用程序模块都必须在AndroidMainfest.xml文件中声明使用到的这些模块。Activity是最基本的模块。我们称之为“活动”。简单理解,Activity代表一个用户所能看到的屏幕,主要用于处理应用程序的整体性工作,例如,监听系统事件(按键事件、触摸屏

16、事件等),为用户显示指定的View,启动其他Activity等。所有应用的Activity都继承于Android.app.Activity类,该类是Android提供的基层类,其他的Activity继承该父类后,通过父类的方法来实现各种功能,这种设计在其他领域也较为常见。Android用Intent这个特殊类实现在Activity与Activity之间的切换。Intent类用于描述应用的功能。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。典型的动作类型有:MAIN、VIEW、PICK、EDIT等,而动作对应的数据则以URI的形式表示6。数据是应用的核心。在Android

17、中,默认使用SQLite作为系统数据库。但是在Android中,使用方法有点小小的不一样。在Android中,每一个应用都运行在各自的进程中,当一个应用需要访问其他应用的数据时,也就是数据需要在不同的虚拟机之间传递,这样的情况操作起来可能有些困难(正常情况下,你不能读取其他应用的db文件),ContentProvider正是用来解决在不同的应用包之间共享数据的工具7。Service即“服务”的意思,既然是服务,那么Service将是一个生命周期长而且没有用户界面的程序。如一个正在从播放列表中播放歌曲的媒体播放器,在这个媒体播放器应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌

18、曲。然而,音乐重放这个功能并没有对应的activity,因为使用者会认为在导航到其他屏幕时音乐应该还在播放。在这个例子中,媒体播放器这个activity会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。同时,系统也将保持这个service一直执行,直到这个service运行结束。另外,我们还可以通过使用Context.bindService()方法连接到一个service上(如果这个service当前还没有处于启动状态,则将启动它)。当连接到一个service之后,还可用service提供的接口与它进行通讯。以媒体播放器为例,我们还可以执

19、行暂停、重播等操作8。2.1.2 Java简介Java是一种简单的、面向对象的、分布式的、安全的、可移植的、性能优异的多线程语言。它以其强安全性、平台无关性、硬件结构无关性、语言简洁、面向对象的特点,在网络编程语言中占据了无可比拟的优势,成为实现电子商务系统的首选语言9。Java具有如下特点:l 简单性Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需知道一些概念就能够编出一些应用程序。Java程序相对较小,其代码能够在小机器,例如手机上运行,这应该是大家经常可以看到的。l 面向对象语言Java的设计集中于对象与其接口,它提供了简单的类机制以与动态的接口模型。

20、对象中封装了它的状态变量和相应的方法,实现了模块化和信息的隐藏;而类则是提供了对象的原型,并且通过继承的机制,子类可以使用父类所提供的方法,以实现代码的复用。l 健壮性Java语言被病毒感染和破坏得最少。大部分病毒程序常用的方法就是通过巧妙地运用地址变量如指针来获取计算机的资源,而Java正好放弃了难学和危险的指针功能,从而使Java更安全。l 多线程设计Java的目标之一,就是为了满足人们对创建交互式网上程序的需要。多线程就是为实现这个目标而设计出来的,它使用Java编写出来的应用程序可以同时执行多个任务。多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。l 自动存管

21、理可以说自动存管理是Java健壮性的体现,存管理是很多种应用程序的关键因素。在网络上的其他地方读取大量的数据,之后把该数据写入硬盘上的数据库,一般的设计就是把数据读入存中的某种集合,对这些数据执行某些操作,之后把数据写入数据库。在数据写入数据库后,在下一批处理之前,临时存储数据的集合必须清空旧数据,或者被删除后再建。这种操作可能执行很多次,在像C+这些不提供自动垃圾搜集的语言中,手工清空或删除集合数据结构逻辑上的一点点缺陷就可能导致大量的存被错误地收回或丢失。Java的自动存管理正好解决这一点,它使程序员不用再为存管理写大量的代码10。2.2 开发环境JDK1.6Eclipse3.5Andro

22、idSDK10.0Eclipse插件ADT10.02.3 开发环境变量配置2.3.1 JDK配置右键点击计算机-属性-高级系统设置,点击下面的环境变量,在下面的“系统变量”处选择新建在变量名处输入JAVA_HOME,并将JDK所在地址填入变量值中,确定即可,如图2-1所示。图2-1 JDK配置1确定后就会返回环境变量界面,再新建一个系统变量名为classpath,变量值为%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar,确定即可,如图2-2所示。图2-2 JDK配置2确定后仍会返回环境变量界面,然后再找到Path的变量,双击或者点击编辑,在变量名

23、最前面加上%JAVA_HOME%/bin,确定即可,如图2-3所示。 图2-3 JDK配置3然后开始运行cmd,输入java或者javac看看有没有效果,如果出现一大堆其它的东西,那就好了,如果出现类似xxx不是部或者外部命令之类的,那就说明你的设置有问题,看看哪里出现问题然后加以改正。2.3.2 SDK配置新建一个系统变量Android,并将SDK文件夹中的platform-tools和tools的地址填入变量值中,以分号来隔开,确定即可,如图2-4所示。图2-4 SDK配置1然后找到Path,在Path最后加上;%Android%,如图2-5所示。 图2-5 SDK配置2然后测试环境变量是

24、否配置成功,在cmd中输入adb出现一堆东西,说明环境变量配置成功。2.3.3 Eclipse配置首先需要添加Eclipse插件ADT,在打开Eclipse后,点击菜单栏的HelpInstall New Software.然后点击Add会出来一个Add Site的窗口,这里Name输入ADT,Location中输入ADT在电脑中的地址,然后就等待连接了,连接上将Developer Tools全都选中accept,finish就可以了,完成后会提示重启Eclipse来加载插件,重启,就可以用了。 还需要将Android SDK插入到Eclipse中,打开Eclipse后,点击菜单栏的Window

25、Preferences然后点击Android,在SDK Location输入SDK存放的位置,点击Apply则会显示现有的Android的模拟器版本,如图2-6所示。图2-6 Eclipse配置2.4 应用环境基于Android的推箱子游戏适用于Android2.1与以上版本。第三章 游戏设计3.1 游戏需求分析玩家是通过对小人的移动操作来控制推动箱子的,并且玩家需要避过障碍物以与死角,才能将其推放到指定位置从而达到过关的目的。如果玩家将箱子推入死角导致箱子无法移动或不能移动到指定位置则闯关失败,可以通过退出操作进入菜单界面来重新挑战游戏。游戏功能需求如下所示:游戏界面需求:简洁美观的用户界面

26、,可以带给用户自然清晰的画面。游戏情节需求:本游戏为轻量级的益智游戏,因此不存在很复杂的情节。这方面主要要做的工作是设计游戏各关仓库的形状、大小、可通过区域,以与各关中箱子的初始位置与目的地,移动中的箱子与终点上的箱子要所有区别,因此需要两不同的图片以示区别。键盘处理事件:控制小人与箱子的移动,通过键盘方向键(上、下、左、右键)对小人进行上、下、左、右的移动,并且能够推动箱子。显示需求:当所有箱子都到达指定位置后即可过关,若进入死角则无法通过过关卡,需要进行退出操作从菜单界面来重新挑战游戏。3.2 游戏设计3.2.1 系统设计思想本次设计主要是设计一个能够在Android手机上运行的推箱子游戏

27、。根据一般玩手机游戏的流程,玩家一般是先进入一个欢迎动画界面,等待动画结束或者直接点击画面后进入游戏的菜单界面,在菜单界面,玩家可以进行开始游戏、声音开关、游戏说明、退出游戏操作,从菜单界面点击开始游戏进入游戏界面开始游戏,在游戏界面里,玩家还可以退到菜单界面,本游戏软件也将遵循该流程。3.2.2 游戏总体设计游戏界面游戏开始界面菜单界面欢迎动画界面退出退出游戏游戏说明声音控制开始游戏图3-1 游戏总体设计3.2.3 系统功能模块设计本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小人模块和音乐模块,各个模块的功能描述如下:l 初始化模块。该模块包括屏幕初始化和游戏第一关的初

28、始化。屏幕初始化用于显示欢迎动画,游戏第一关的初始化是构建每一关的关卡。l 画图模块。该模块主要是被其他模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。l 移动箱子模块。该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。l 移动小人模块。该模块用于控制小人的移动,从而推动箱子到达目的地。l 音乐模块。该模块为游戏提供背景音乐、小人推箱子的声音和游戏胜利的声音。3.2.4 游戏的类框架设计表3-1 游戏的类框架公共类欢迎界面相关类菜单界面相关类游戏界面相关类PushBoxActivityWelcomeViewMenuViewGameViewMySpri

29、teWelcomeViewGoThreadMenuViewGoThreadMapListBoxThreadKeyThreadWelcomeViewDrawThreadMenuViewDrawThreadSpriteThreadSpriteMoveThreadGameViewDrawThread3.2.5 算法的设计该游戏没有涉与到复杂的算法设计,关键在于对地图矩阵的操作。游戏中用一个MapList类操作地图,其中有两个三维数组记录游戏地图信息,一个三维数组表示第一层地图即地板层,另一个三维数组表示第二层地图即建筑层,三维矩阵便于管理,如果要加入新关卡,只需要在三维矩阵中加入二维矩阵就可以了11

30、。游戏过程中,最为主要的地方在于对地图矩阵,以与小人状态信息(包括位置、行走状态等)的维护,小人每行走一步,就更新一次地图信息和小人状态信息。另外一个比较重要的地方是游戏状态的保存方面12。为保存小人信息,特别开设了一个MySprite类,该类主要作用就是保存玩家每一步的游戏状态,便于撤销。逻辑判断过程中,需要对地图进行维护,主要是通过小人的移动位置进行更新的。l 小人每次移动时,四周的物体如下图:小人地面移动到合适位置的箱子未在合适位置的箱子子墙壁箱子应摆放到的位置图3-2 主角四周物体l 当小人是在移动箱子时,箱子四周有以下几种物体:箱子箱子应该摆放到的位置箱子、墙壁地面1、已摆放到合适位

31、置的箱子2、未摆放到合适位置的箱子图3-3 箱子四周物体第四章 游戏的实现4.1 欢迎界面的实现 当玩家运行游戏时,首先看到欢迎界面,欢迎界面是整个游戏的门面。本游戏的欢迎动画首先是木门打开如图4-1,接着是铁门打开如图4-2,最后是墙打开如图4-3,所有门打开后就会显示一个有山有水的图片如图4-4。欢迎动画界面是通过改变动画线程中图片的变量值来改变图片的位置。 图4-1 木门 图4-2 铁门 图4-3 墙 图4-4 山水图4.2 菜单界面的实现玩家在欢迎动画界面需等待30秒方能进入菜单界面,也可直接点击屏幕进入菜单界面。菜单界面是由滚动的背景图片、不动的背景图片,和开始游戏、声音开、声音关、

32、游戏说明、退出游戏图片组成,如图4-5所示。图4-5 菜单界面4.2.1 开始游戏当玩家点击开始游戏图片即可进入游戏界面开始游戏,如图4-6所示。图4-6 开始游戏4.2.2 声音控制玩家进入菜单界面时背景声音是开即显示的是声音开图片,菜单界面的背景音乐会滚动播放,如果玩家想要关闭声音,只需点击声音开图片就会关闭声音同时显示声音关图片,如图4-7所示。声音状态图片是根据PushBoxActivity中的声音状态值进行绘制。图4-7 声音控制4.2.3 游戏说明当玩家点击游戏说明按钮时玩家会进入游戏说明界面,如图4-8所示,游戏说明界面是由一说明图片组成,背景设置为白色,玩家如果想要离开此界面只

33、需点击屏幕即可回到菜单界面。图4-8 游戏说明4.2.4 退出游戏当玩家点击退出图片时,会直接离开游戏到模拟器的主界面,如图4-9所示。图4-9 退出游戏4.3 游戏界面的实现游戏界面实现包括地图类的实现,角色类的实现,键盘监听线程的实现,角色移动线程的实现。当玩家将箱子都推到指定的位置后本关游戏胜利,出现恭喜过关的图片,点击图片进入下一关卡,如图4-10所示。图4-10 胜利进行下一关4.3.1 地图类的实现该类中包含了两个三维数组,一个三维数组表示第一层地图即地板层,另一个三维数组表示第二层地图即建筑层。三维数组中存储着每个关卡的地图,三维矩阵便于管理,如果要加入新关卡,只需要在三维矩阵中

34、加入一个二维矩阵就可以了。本游戏设计了两个关卡。主要代码是:public static intmap1 = /第一层地图,即地板层-1,-1,-1,1, 0, 1, 0, 1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0,

35、1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0, 1,1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 2, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,-1,-1,-1,1,

36、 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,-1,-1,-1,-1,-1,-1,1, 0, 1, 0, 1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 2, 3, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1,1, 0, 1, 2, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0,0, 1, 0, 1, 0,

37、1, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 1, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,-1,-1,-1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0

38、, 1,-1,-1,-1;public static intmap2 = /第二层地图-1,-1,-1,2, 2, 2, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 1, 0, 2, 0, 0, 2, 0, 0, 0, 2,2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2,2, 0, 2, 2,

39、 0, 0, 0, 0, 0, 2, 0, 1, 0, 2,2, 0, 0, 0, 1, 2, 2, 0, 0, 0, 1, 0, 0, 2,2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 0, 2,2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2,2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2,-1,-1,-1,2, 2, 2, 2, 2, 2, 2, 2,

40、2, 2, 2,-1,-1,-1,-1,-1,-1,2, 2, 2, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 0, 2, 0, 1, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 0, 2,2, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 2, 0, 2,2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 2,2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0

41、, 2,2, 0, 0, 0, 1, 2, 2, 2, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2,2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2,2, 0, 1, 0, 0, 1, 2, 0, 0, 0, 2, 2, 2, 2,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,-1,-1,-1,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,-1,-1,-1;4.3.2 角色类

42、的实现角色类对小人进行了封装,记录小人当前的位置、图片和坐标以与状态。将小人向上走路、向下走路、向左走路、向右走路、向上推箱子、向下推箱子、向左推箱子、向右推箱子的图片ID放到数组中进行管理在构造器中根据小人当前的位置换算出当前实际坐标,设置自己封装的绘制方法,根据小人的状态进行绘制,若小人正在移动,直接绘制图片,若小人静止时,需要进行坐标修正然后再绘制图片13。主要代码是:public void drawMySelf(Canvas canvas, Paint paint)/绘制方法if(this.isRun)canvas.drawBitmap(man, X, Y, paint);else X

43、 = pushBoxActivity.gameView.initX+36*j-15*i + 2; Y = pushBoxActivity.gameView.initY+10*j+25*i - 25; canvas.drawBitmap(man, X, Y, paint);4.3.3 键盘监听线程的实现 键盘监听线程会定时检测键盘的状态,然后根据状态调用相应的处理。每次循环需要休眠时间为150毫秒,当需要键盘监听时,判断是推箱子还是走路,然后得到当前键盘状态码赋到action中,再对action进行处理判断上、下、左、右键是否被按下。当上键被按下时,需要先判断是否到界面的最上方,若到最上方将不会

44、再往上,若没到最上方时,会检测上方是否有箱子,当箱子上方为空地时才可以移动箱子,再判断是否为目的地,如果是目的地需要把箱子设为绿色,如果不是目的地直接移动即可14。在箱子移动时需要启动箱子的移动线程,进行箱子的移动,同时在移动过程中将键盘的监听标志位设为false,此时失去屏幕监听。下键、左键、右键同理。4.3.4 角色移动线程的实现角色移动线程给定初始位置和结束位置的行列,自动计算成实际坐标,然后分两步移动,当距边界较近时自动滚屏。当向上移动时需要先判断是否可以向上走,如果可以移动小人,需要循环移动实际坐标,之后将是否移动标志位设置为false,表示已经移动完成15。向下移动、向左移动、向右

45、移动同理。第五章 软件测试软件测试是为了发现错误而执行程序的过程。软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。在开发软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。本系统的测试阶段信息流程图如图5-1所示。图5-1 测试阶段流程图5.1 测试方案与其执行l 黑盒测试不是基于部设计和代码的任何知识,而是基于需求和功能性的测试,黑盒测试又叫“功能测试”,它是已经知道产品应该具有的功能,通过测试

46、来检验是否每个功能都能正常使用。l 白盒测试是指基于一个应用代码的部逻辑知识,即基于覆盖全部代码、分支、路径、条件的测试,又叫“结构测试”,它知道产品的部工作过程,可以通过来检验产品部动作是否按照说明书的规定正常进行。l 本设计中,为了测试系统的功能是否都按要现了,采用黑盒测试方法。5.2 测试步骤集成测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试。l 单元测试:开始是单元测试,集中对源代码中实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。l 集成测试:集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。l 确认测试:确认

47、测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以与软件配置是否完全、正确。l 系统测试:系统测试是把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。表5-1 系统测试记录操作名称操作流程操作结果和输出欢迎动画界面进入欢迎动画界面进行测试。从模拟器应用程序列表中点击推箱子游戏的图标可以进入欢迎动画界面,并能够实现动画效果,点击图片可以直接进入菜单界面。菜单界面对开始游戏,声音控制、游戏说明和退出游戏进行测试。点击开始游戏能够进入游戏界面,声音开关可以控制背景声音的开关,游戏说明可以看到游戏的玩法,点击退出游戏可以退到主界面。游戏界面进入游戏界面,对小

48、人的移动、能否显示胜利界面进入下一关卡、能否退出游戏界面回到菜单界面进行测试。进入游戏界面后,可以成功使小人和箱子移动,将箱子都推到指定位置后会显示恭喜过关画面,点击此画面顺利进入下一关卡,点击退出也可以回到菜单界面。5.3 本章小结本章主要介绍了软件测试的知识和对系统进行测试的信息。随着系统的开发,分别系统进行了单元测试、集成测试、确认测试和系统测试。通过表格展示了系统的测试过程和实现的功能。还对测试过程中出现的问题进行了分析解决。第六章 总结通过编写本次毕业设计程序,我完成了基于Android的推箱子游戏的软件开发任务。在些其间,我遇到了许多问题,如地图文件的制作与读取、游戏界面过大或者过

49、小、游戏图形的大小问题、小人与箱子的移动等等。不过,最终我都一一解决了相关问题,对其中比较主要的几点体会总结如下:第一,为了熟悉推箱子游戏的相关运作,我经常在电脑游戏上运用推箱子游戏,一步步地发现它拥有的功能,然后再思考与查阅资料进行分析,最后经过逐步的设计与反复的修改论证,才完成了整个游戏的开发。第二,完成了从“小到全”,从“全到精”的转变。在设计的过程中,我经常会遇到一些困难,我也借此机会学会如何通过反复思考和测试找出自己的错误并加以改正,再进行下一个步骤的设计。本程序就是这样一点一点的完成的,在这之后再来优化整个程序。第三,本次设计也让我得到一个不断学习新鲜事物的机会,从设计初的诸多不懂

50、到最后能够顺利完成,期间我体会到在实践中学习的重要性,这对于将来我走上工作岗位具有重要意义。 第四,通过毕业设计使我对Android加深了解,也对我今后的就业之路奠定了一定的基础。经过这些日子的不断努力,本次的毕业设计程序基本上完成了。回顾整个设计过程,我学到了许多书本上没有学到的知识。通过这次自己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,不仅使我受益匪浅,同时也体验到了开发软件开发的难度与不断更新自己的重要性。由于我是初次涉与这类开发软件,因此这其中或许还有很多的不足之处,在游戏界面不可以控制声音开关,也不能重新开始游戏,玩家不能选择关卡保存游戏等等。这也是我今后所要充实之处,

51、在这里也恳请各位老师能够对我的作品指明不足并加以改正。总体来说,这次毕业设计收获是颇丰的,这也是我在大学四年来完成的一个比较全面的实际例子。在这次设计的过程,我也查阅了大量的资料,对Android有了更加全面的认识,对于软件工程这些辅助性的教材也巩固了不少,也为我这次的毕业设计提供了很大的帮助,同时锻炼并且增强了我这方面的能力。在今后的生活和工作中我会更好的发挥自己的优势,学好自己选择的这项专业技术,让自己在这条路上的明天会更好。参考文献1党成基于Google Android智能手机平台的研究与应用D:大学,20112熊刚基于Android的智能手机的设计与实现D:理工大学,20103丰盛An

52、droid应用开发解密M:机械工业,2010,21094马越Android的架构与应用D:中国地质大学,20085靳岩,尚朗Android开发入门与实战M:人民邮电,2009,2002306Lauren Darcey,Schane ConderAndroid移动开发一本就够Z:人民邮电, 20117E2ECloud工作室深入浅出Google AndroidZ:人民邮电,20098百度百科Ophone百科EB/OLbaike.baidu./view/2410021.htm,2011-12-299宝林Java程序设计与案例M:高等教育,2004,2020010冀振燕,程虎Java编译程序技术与Ja

53、va性能J软件学报,2000,25(17):121511毕广吉Java程序设计实例教程M:水利水电,2007,19221612郭宏志Android应用开发详解M:电子工业,2010,40542513艳丽Android时间处理过程剖析J理工大学学报,2010,33(3):455214利国,代闻,龚海平Android移动开放案例详解Z:人民邮电,201015余志龙,名杰,小凤等Google Android SDK开发案例大全M:人民邮电,2010,180240中文译文面向Android手机的嵌入式代理模型摘 要本文提出了一种“专门”为新的谷歌AndroidSDK设计的代理模型,在此模型下Andro

54、id手机可以视为一种软件代理。由于使用了能在不同系统上实施的抽象概念,这种代理模型具有比理论更实用的方法。Android是一个基于Linux的开放式系统,它的出现已经为代理的实现创建了新的期望。这是一种在普适计算环境中实现嵌入式智能代理的有效方法,这种方法使代理可能运行在不同的硬件平台上。这一设想可以被认为是一个真正的智能环境。关键词:代理模型;嵌入式代理;谷歌Android1 引言技术在我们的生活环境中几乎是无形的,因为它已经被安插在环境与提高人民生活质量的目标之间,用以创造一个智能环境,普适计算或者普与计算9就是这样的例5。在普适计算中,感知已成为我们社会的习惯性特征,通过网络使所有的固定或移动对象的类(嵌入式系统)相互连接从而出现的电子设备。计算机技术已成为几乎看不见的一个典,它作为一个嵌入式计算机伪影的结果进入我们的

温馨提示

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

评论

0/150

提交评论