基于Android的推箱子游戏设计Word文件下载.docx
- 文档编号:16425614
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:34
- 大小:2.56MB
基于Android的推箱子游戏设计Word文件下载.docx
《基于Android的推箱子游戏设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于Android的推箱子游戏设计Word文件下载.docx(34页珍藏版)》请在冰豆网上搜索。
中文译文
致谢
第一章绪论
1.1课题研究背景
在我们的生活中有许多的游戏,但是游戏不同,它也会给玩家带来不同的感受和生活理念。
游戏是我们日常生活的一个必不可少的娱乐项目,也带动了游戏相关产业市场的发展。
游戏平台经过从游戏机到电视游戏,然后又到pc游戏,手机游戏,中间经历了很多的技术更新和变革。
但随着新技术的发展和我们生活水平的提高,手机开始逐渐普及,因为手机是非常小巧便捷,所以它成为我们日常生活中必备通讯工具。
基于手机平台的游戏也就拥有了巨大的市场空间,随着3G的开通和应用,手机游戏必然会迎来新的一轮游戏热潮[1]!
1.2课题来源及意义
游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。
随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发出了各种版本、各种类型的推箱子游戏。
这其中也包括很多手机版本的实现,随着Android手机终端的逐渐热销,Android也引起众多手机应用程序开发商的关注,由于Android基于Linux内核且具有开源、免费的特性,它迅速得到广大爱好者以及许多厂商的支持,基于Android所开发的手机游戏拥有巨大的潜力已成为行业共识。
本文主要研究在Android手机上开发一款推箱子游戏[2]。
1.3国内外发展现状
Android是由Google为首的OHA(OpenHandsetAlliance)推出的一款开放的嵌入式操作系统平台。
从2008年推出到现在Android正以前所未有的速度聚集着来自世界各地的开发者,越来越多的创意被应用到Android应用程序的开发中,大有席卷整个手机产业的趋势。
Android系统,是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
Android的核心系统服务依赖于Linux内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。
由于Android带有相当浓郁的Linux血统这也就意味着他拥有开源Linux的众多优点:
安全、运算速度快、易于开发等等[3]。
正因为Android具有上述的优点,所以它在国内具有相当强劲的竞争优势。
青年网络的主要负责人潘长华先生说到:
Android作为一款十分优秀的移动开发平台十分适合国内的开发环境。
尤其是中小企业开发团队低成本以及源代码的分享可以为企业节省大量资金,这对于中小企业来说无疑是最大的诱惑。
同时一个资深的Android开发爱好者曾说过:
如果你是个人开发爱好者,那么Android就是Google为你量身打造的,开源才是王道,Android才是未来的主宰[4]。
伴随着GoogleAndroid操作系统的盛行,国内外的开发团队也逐渐的壮大起来了,基于AndroidSDK的系统开发,基于Android应用的开发等已逐渐倍受大家关注,而手机游戏开发历来是移动开发中分量最重的部分,面对如此火爆的Android市场自然也不甘示弱,由于Android的应用层开发是基于Java的开发,所以必有其可以快速移植J2ME开发的游戏的优势,但是移植的游戏必定也不能发挥Android操作系统独特的特性。
所以目前基于Android游戏开发的市场还是不够成熟的,面对这种情况,在了解AndroidSDK基础上,本课题开发的就是一款完全适应于Android操作系统的推箱子益智游戏。
1.4本文研究主要内容
本游戏分三个模块设计与实现:
欢迎动画界面的设计与实现,菜单界面的设计与实现,游戏界面的设计与实现。
游戏运行后首先进入欢迎动画界面,动画结束后,进入菜单界面,在菜单界面上有四种菜单供用户选择。
游戏的过程中需要在适当的地方添加上音效,并且可以对音效进行开与关的设置。
还需要为游戏添加说明界面,简单介绍游戏的基本功能及玩法。
游戏需要设计适当的难度,使玩家能够经过努力完成游戏。
1.5本文章节安排
第一章是绪论,阐述了本论文的选题背景、来源和意义,以及国内外发展现状,并对本文研究的主要内容进行简述。
第二章介绍Android平台的搭建。
第三章介绍开发此项目所做的需求分析和游戏设计。
第四章介绍游戏实现的功能。
第五章介绍游戏的测试。
第六章对本次毕业设计的总结。
第二章Android平台搭建
本章主要介绍项目需要的开发工具,及如何构建Android开发环境,包括JDK、AndroidSDK、Eclipse的配置。
2.1工具介绍
2.1.1Android简介
Android是基于Linux内核的操作系统,Android系统具有开放性、应用程序无界限、应用程序是在平等的条件创建的、应用程序可以轻松地嵌入网络和应用程序可以并行运行等特点。
Android的系统架构共分为4层,由高到低分别是应用层、应用框架层、系统运行库层和linux内核层。
Android应用程序是由四个模块构造:
Activity,Intent,ContentProvider,Service[5]。
当然也不是每个Android应用程序都必须由这四部分组成,可以根据开发者的需求进行组合。
但任何一个应用程序模块都必须在AndroidMainfest.xml文件中声明使用到的这些模块。
Activity是最基本的模块。
我们称之为“活动”。
简单理解,Activity代表一个用户所能看到的屏幕,主要用于处理应用程序的整体性工作,例如,监听系统事件(按键事件、触摸屏事件等),为用户显示指定的View,启动其他Activity等。
所有应用的Activity都继承于Android.app.Activity类,该类是Android提供的基层类,其他的Activity继承该父类后,通过父类的方法来实现各种功能,这种设计在其他领域也较为常见。
Android用Intent这个特殊类实现在Activity与Activity之间的切换。
Intent类用于描述应用的功能。
在Intent的描述结构中,有两个最重要的部分:
动作和动作对应的数据。
典型的动作类型有:
MAIN、VIEW、PICK、EDIT等,而动作对应的数据则以URI的形式表示[6]。
数据是应用的核心。
在Android中,默认使用SQLite作为系统数据库。
但是在Android中,使用方法有点小小的不一样。
在Android中,每一个应用都运行在各自的进程中,当一个应用需要访问其他应用的数据时,也就是数据需要在不同的虚拟机之间传递,这样的情况操作起来可能有些困难(正常情况下,你不能读取其他应用的db文件),ContentProvider正是用来解决在不同的应用包之间共享数据的工具[7]。
Service即“服务”的意思,既然是服务,那么Service将是一个生命周期长而且没有用户界面的程序。
如一个正在从播放列表中播放歌曲的媒体播放器,在这个媒体播放器应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。
然而,音乐重放这个功能并没有对应的activity,因为使用者会认为在导航到其他屏幕时音乐应该还在播放。
在这个例子中,媒体播放器这个activity会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。
同时,系统也将保持这个service一直执行,直到这个service运行结束。
另外,我们还可以通过使用Context.bindService()方法连接到一个service上(如果这个service当前还没有处于启动状态,则将启动它)。
当连接到一个service之后,还可用service提供的接口与它进行通讯。
以媒体播放器为例,我们还可以执行暂停、重播等操作[8]。
2.1.2Java简介
Java是一种简单的、面向对象的、分布式的、安全的、可移植的、性能优异的多线程语言。
它以其强安全性、平台无关性、硬件结构无关性、语言简洁、面向对象的特点,在网络编程语言中占据了无可比拟的优势,成为实现电子商务系统的首选语言[9]。
Java具有如下特点:
●简单性
Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需知道一些概念就能够编出一些应用程序。
Java程序相对较小,其代码能够在小机器,例如手机上运行,这应该是大家经常可以看到的。
●面向对象语言
Java的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。
对象中封装了它的状态变量和相应的方法,实现了模块化和信息的隐藏;
而类则是提供了对象的原型,并且通过继承的机制,子类可以使用父类所提供的方法,以实现代码的复用。
●健壮性
Java语言被病毒感染和破坏得最少。
大部分病毒程序常用的方法就是通过巧妙地运用地址变量如指针来获取计算机的资源,而Java正好放弃了难学和危险的指针功能,从而使Java更安全。
●多线程
设计Java的目标之一,就是为了满足人们对创建交互式网上程序的需要。
多线程就是为实现这个目标而设计出来的,它使用Java编写出来的应用程序可以同时执行多个任务。
多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。
●自动内存管理
可以说自动内存管理是Java健壮性的体现,内存管理是很多种应用程序内的关键因素。
在网络上的其他地方读取大量的数据,之后把该数据写入硬盘上的数据库内,一般的设计就是把数据读入内存中的某种集合内,对这些数据执行某些操作,之后把数据写入数据库。
在数据写入数据库后,在下一批处理之前,临时存储数据的集合必须清空旧数据,或者被删除后再建。
这种操作可能执行很多次,在像C++这些不提供自动垃圾搜集的语言中,手工清空或删除集合数据结构逻辑上的一点点缺陷就可能导致大量的内存被错误地收回或丢失。
Java的自动内存管理正好解决这一点,它使程序员不用再为内存管理写大量的代码[10]。
2.2开发环境
JDK1.6
Eclipse3.5
AndroidSDK10.0
Eclipse插件ADT10.0
2.3开发环境变量配置
2.3.1JDK配置
右键点击计算机->
属性->
高级系统设置,点击下面的环境变量,在下面的“系统变量”处选择新建在变量名处输入JAVA_HOME,并将JDK所在地址填入变量值中,确定即可,如图2-1所示。
图2-1JDK配置1
确定后就会返回环境变量界面,再新建一个系统变量名为classpath,变量值为%JAVA_HOME%/lib/rt.jar;
%JAVA_HOME%/lib/tools.jar,确定即可,如图2-2所示。
图2-2JDK配置2
确定后仍会返回环境变量界面,然后再找到Path的变量,双击或者点击编辑,在变量名最前面加上%JAVA_HOME%/bin,确定即可,如图2-3所示。
图2-3JDK配置3
然后开始—运行cmd,输入java或者javac看看有没有效果,如果出现一大堆其它的东西,那就好了,如果出现类似xxx不是内部或者外部命令之类的,那就说明你的设置有问题,看看哪里出现问题然后加以改正。
2.3.2SDK配置
新建一个系统变量Android,并将SDK文件夹中的platform-tools和tools的地址填入变量值中,以分号来隔开,确定即可,如图2-4所示。
图2-4SDK配置1
然后找到Path,在Path最后加上;
%Android%,如图2-5所示。
图2-5SDK配置2
然后测试环境变量是否配置成功,在cmd中输入adb出现一堆东西,说明环境变量配置成功。
2.3.3Eclipse配置
首先需要添加Eclipse插件ADT,在打开Eclipse后,点击菜单栏的Help—>
InstallNewSoftware...然后点击Add会出来一个AddSite的窗口,这里Name输入ADT,Location中输入ADT在电脑中的地址,然后就等待连接了,连接上将DeveloperTools全都选中accept,finish就可以了,完成后会提示重启Eclipse来加载插件,重启,就可以用了。
还需要将AndroidSDK插入到Eclipse中,打开Eclipse后,点击菜单栏的Window—>
Preferences然后点击Android,在SDKLocation输入SDK存放的位置,点击Apply则会显示现有的Android的模拟器版本,如图2-6所示。
图2-6Eclipse配置
2.4应用环境
基于Android的推箱子游戏适用于Android2.1及以上版本。
第三章游戏设计
3.1游戏需求分析
玩家是通过对小人的移动操作来控制推动箱子的,并且玩家需要避过障碍物以及死角,才能将其推放到指定位置从而达到过关的目的。
如果玩家将箱子推入死角导致箱子无法移动或不能移动到指定位置则闯关失败,可以通过退出操作进入菜单界面来重新挑战游戏。
游戏功能需求如下所示:
游戏界面需求:
简洁美观的用户界面,可以带给用户自然清晰的画面。
游戏情节需求:
本游戏为轻量级的益智游戏,因此不存在很复杂的情节。
这方面主要要做的工作是设计游戏各关仓库的形状、大小、可通过区域,以及各关中箱子的初始位置与目的地,移动中的箱子与终点上的箱子要所有区别,因此需要两不同的图片以示区别。
键盘处理事件:
控制小人与箱子的移动,通过键盘方向键(上、下、左、右键)对小人进行上、下、左、右的移动,并且能够推动箱子。
显示需求:
当所有箱子都到达指定位置后即可过关,若进入死角则无法通过过关卡,需要进行退出操作从菜单界面来重新挑战游戏。
3.2游戏设计
3.2.1系统设计思想
本次设计主要是设计一个能够在Android手机上运行的推箱子游戏。
根据一般玩手机游戏的流程,玩家一般是先进入一个欢迎动画界面,等待动画结束或者直接点击画面后进入游戏的菜单界面,在菜单界面,玩家可以进行开始游戏、声音开关、游戏说明、退出游戏操作,从菜单界面点击开始游戏进入游戏界面开始游戏,在游戏界面里,玩家还可以退到菜单界面,本游戏软件也将遵循该流程。
3.2.2游戏总体设计
图3-1游戏总体设计
3.2.3系统功能模块设计
本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小人模块和音乐模块,各个模块的功能描述如下:
●初始化模块。
该模块包括屏幕初始化和游戏第一关的初始化。
屏幕初始化用于显示欢迎动画,游戏第一关的初始化是构建每一关的关卡。
●画图模块。
该模块主要是被其他模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。
●移动箱子模块。
该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。
●移动小人模块。
该模块用于控制小人的移动,从而推动箱子到达目的地。
●音乐模块。
该模块为游戏提供背景音乐、小人推箱子的声音和游戏胜利的声音。
3.2.4游戏的类框架设计
表3-1游戏的类框架
公共类
欢迎界面相关类
菜单界面相关类
游戏界面相关类
PushBoxActivity
WelcomeView
MenuView
GameView
MySprite
WelcomeViewGoThread
MenuViewGoThread
MapList
BoxThread
KeyThread
WelcomeViewDrawThread
MenuViewDrawThread
SpriteThread
SpriteMoveThread
GameViewDrawThread
3.2.5算法的设计
该游戏没有涉及到复杂的算法设计,关键在于对地图矩阵的操作。
游戏中用一个MapList类操作地图,其中有两个三维数组记录游戏地图信息,一个三维数组表示第一层地图即地板层,另一个三维数组表示第二层地图即建筑层,三维矩阵便于管理,如果要加入新关卡,只需要在三维矩阵中加入二维矩阵就可以了[11]。
游戏过程中,最为主要的地方在于对地图矩阵,以及小人状态信息(包括位置、行走状态等)的维护,小人每行走一步,就更新一次地图信息和小人状态信息。
另外一个比较重要的地方是游戏状态的保存方面[12]。
为保存小人信息,特别开设了一个MySprite类,该类主要作用就是保存玩家每一步的游戏状态,便于撤销。
逻辑判断过程中,需要对地图进行维护,主要是通过小人的移动位置进行更新的。
●小人每次移动时,四周的物体如下图:
图3-2主角四周物体
●当小人是在移动箱子时,箱子四周有以下几种物体:
图3-3箱子四周物体
第四章游戏的实现
4.1欢迎界面的实现
当玩家运行游戏时,首先看到欢迎界面,欢迎界面是整个游戏的门面。
本游戏的欢迎动画首先是木门打开如图4-1,接着是铁门打开如图4-2,最后是墙打开如图4-3,所有门打开后就会显示一个有山有水的图片如图4-4。
欢迎动画界面是通过改变动画线程中图片的变量值来改变图片的位置。
图4-1木门图4-2铁门
图4-3墙图4-4山水图
4.2菜单界面的实现
玩家在欢迎动画界面需等待30秒方能进入菜单界面,也可直接点击屏幕进入菜单界面。
菜单界面是由滚动的背景图片、不动的背景图片,和开始游戏、声音开、声音关、游戏说明、退出游戏图片组成,如图4-5所示。
图4-5菜单界面
4.2.1开始游戏
当玩家点击开始游戏图片即可进入游戏界面开始游戏,如图4-6所示。
图4-6开始游戏
4.2.2声音控制
玩家进入菜单界面时背景声音是开即显示的是声音开图片,菜单界面的背景音乐会滚动播放,如果玩家想要关闭声音,只需点击声音开图片就会关闭声音同时显示声音关图片,如图4-7所示。
声音状态图片是根据PushBoxActivity中的声音状态值进行绘制。
图4-7声音控制
4.2.3游戏说明
当玩家点击游戏说明按钮时玩家会进入游戏说明界面,如图4-8所示,游戏说明界面是由一张说明图片组成,背景设置为白色,玩家如果想要离开此界面只需点击屏幕即可回到菜单界面。
图4-8游戏说明
4.2.4退出游戏
当玩家点击退出图片时,会直接离开游戏到模拟器的主界面,如图4-9所示。
图4-9退出游戏
4.3游戏界面的实现
游戏界面实现包括地图类的实现,角色类的实现,键盘监听线程的实现,角色移动线程的实现。
当玩家将箱子都推到指定的位置后本关游戏胜利,出现恭喜过关的图片,点击图片进入下一关卡,如图4-10所示。
图4-10胜利进行下一关
4.3.1地图类的实现
该类中包含了两个三维数组,一个三维数组表示第一层地图即地板层,另一个三维数组表示第二层地图即建筑层。
三维数组中存储着每个关卡的地图,三维矩阵便于管理,如果要加入新关卡,只需要在三维矩阵中加入一个二维矩阵就可以了。
本游戏设计了两个关卡。
主要代码是:
publicstaticintmap1[][][]=
{//第一层地图,即地板层
{
{-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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 箱子 游戏 设计