Android推箱子游戏程序设计.docx
- 文档编号:15281130
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:35
- 大小:875.06KB
Android推箱子游戏程序设计.docx
《Android推箱子游戏程序设计.docx》由会员分享,可在线阅读,更多相关《Android推箱子游戏程序设计.docx(35页珍藏版)》请在冰点文库上搜索。
Android推箱子游戏程序设计
Android推箱子游戏程序设计
一、课题来源
本课题来源于一款来自日本的古老游戏——推箱子,其设计目的是训练人的逻辑思维能力。
游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置。
这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务。
如今,伴随着GoogleAndroid操作系统的盛行,基于AndroidSDK的系统开发和基于Android应用的开发等已逐渐倍受大家关注,而手机游戏开发历来是移动开发中分量最重的部分,面对如此火爆的Android市场自然也不甘示弱,由于Android的应用层开发是基于Java的开发,所以必有其可以快速移植J2ME开发的游戏的优势,但是移植的游戏必定也不能发挥Android操作系统独特的特性,所以目前基于Android游戏开发的市场还是不够成熟的,面对这种情况,在了解AndroidSDK基础上,我打算开发一款完全适应于Android操作系统的推箱子游戏。
二、本课题的基本内容
1、地图编辑器(可选)
a)可通过地图编辑器生成地图
b)地图由小正方块拼接组成
c)地图中每一格可以是墙、通道、木箱、目标位置
d)游戏主角所在位置同时必须是通道或者目标位置
e)一张地图中主角数目有且仅有一个
f)一张地图中箱子数目必须与目标位置数目相等
g)允许对正在编辑的地图清除或者替换某一格中的内容
h)地图中一格不允许墙、通道、木箱、目标位置中两个及以上共存,最后添加的类型为该格代表的类型
i)通过地图编辑器生成的地图可以被游戏程序调用
2、基本要求
a)每关卡箱子数目不定
b)主角和箱子只能呆在通道及目标位置上移动,不能穿墙
c)主角不能穿过箱子
d)箱子数量和目标位置数量相等(但每个箱子并不和唯一的目标位置一一对应)
e)主角可以移动和推动木箱(响应键盘方向键)
f)主角只能往前推动箱子,不能向后或者向侧面拉箱子
g)主角不能同时推动两个箱子
h)箱子移动方向正前方紧挨墙壁,不可推动
i)允许撤销以及重做游戏步骤
j)将所有箱子推到设定位置则通过本关,自动进入下一关卡
k)记录每一关中玩家的移动步数
3、扩展功能(可选)
a)保存自定义地图,重启程序后依然可以编辑和调用运行该地图
b)响应点击(触摸)事件,主角可以从当前位置移动多步到达目标位置(绕过障碍物自动寻径)
4、其他
a)屏幕分辨率自适应
b)资源文件必须支持简体中文和英文
三、本课题的重点和难点
1、整个游戏能够有效地完成所设计的各项功能,系统具有较好的视觉效果并且界面友好,操作简单。
2、算法、界面动态效果等设计与实现比较繁琐。
四、论文提纲
一、序论:
课题研究背景及意义
二、本论
1、游戏业务流程和设计方案:
分模块实现各个目标的具体需求:
欢迎动画界面设计与实现,菜单界面设计与实现,游戏界面的框架实现等
2、开发环境:
开发环境及系统运行环境说明
3、程序设计说明及代码:
android推箱子游戏程序所用到的几项主要技术原理
4、设计评价:
android推箱子游戏程序的特性
三、结论:
概括说明设计的情况和价值,并指出其中存在的问题和今后改进方向
五、进度安排
1、提交毕业设计(设计报告)开题报告、任务书2012年3月3日
2、着手毕业设计,开始进入项目2012年3月4日
3、完成毕业设计,开始设计报告2012年5月1日前
4、提交毕业设计(设计报告)第一稿2012年5月5日前
5、提交毕业设计(设计报告)第二稿2012年5月12日前
6、提交毕业设计(设计报告)第三稿2012年5月15日前
7、提交毕业设计(设计报告)正稿2012年5月19日前
指导教师意见:
(请手写意见和签名)
(对本课题的深度、广度及工作量的意见)
指导教师:
(签字)
年月日
教研室审查意见:
(请手写意见和签名)
教研室负责人:
(签字)
年月日
毕业论文开题报告
附表3.毕业设计(论文)任务书
学生姓名
学号
指导教师
设计(论文)题目
Android推箱子游戏程序设计
主要研究内容
1、游戏情节。
主要要做的工作为设计游戏各关仓库的形状、大小、可通过区域、以及各关中箱子的初始位置与目的地。
2、目标受众。
这个游戏受众面比较广,应该是老少皆宜的。
考虑到受众广的原因,应该将操作方式设计得更加人性化,画面更加清晰。
3、呈现技术。
推箱子游戏采用的是2D的呈现技术,可采用手机键盘和触屏两种方式进行操作。
研究方法
1、进行总体的分析和设计,将基本信息模块的具体内容设计完成。
2、完成其它各个子模块的功能。
不同阶段中注意对系统进行备份。
3、通过DDMS调试来发现问题,并要重视做好笔记。
主要技术指标(或研究目标)
1、开发一款可在AndroidSDK2.2平台上运行的推箱子游戏程序,可流畅运行游戏,编辑地图等。
2、实现游戏规则:
在一个有限空间内,将一些木箱放到指定的位置。
箱子只能推不能拉,而且一次只能推动一个箱子,胜利条件是把所有箱子都推到目的地。
3、整个游戏能够有效地完成所涉及的各项功能,系统具有较好的视觉效果且界面友好,操作简便。
主要参考文献
1、《Android应用开发详解》,郭宏志,电子工业出版社
2、《GoogleAndroidSDK开发范例大全(第2版)》,余志龙等、王世江改,人民邮电出版社
3、Android帮助文档
注:
1、本表由指导教师根据学生的开题报告填
摘要
如今,伴随着GoogleAndroid操作系统的盛行,基于AndroidSDK的系统开发和基于Android应用的开发等已倍受大家关注。
但是目前基于Android游戏开发的市场还是不够成熟的,因而一款休闲娱乐、锻炼思维且适应于Android操作系统的游戏必将成为主流。
本课题是结合EclipseSDK开发平台开发的一款基于安卓平台的推箱子小游戏。
该游戏主要分为初始化模块,界面模块,数据存储模块,功能模块及游戏控制模块。
玩家通过控制小乌龟的移动来推动箱子,将所有箱子都推到目的地从而过关。
每关的难易程度不同,可保持玩家对游戏的新鲜感,同时游戏还支持自定义编辑地图,玩家可以根据自身要求设计出更有创意、更富挑战的新地图。
本游戏不仅是适合各类人群休闲娱乐的活动,还有助于提高人们思考问题能力与想象力,改善思维方式,拓展思维。
关键词
安卓,推箱子,休闲娱乐,拓展思维
Abstract
Recently,alongwiththeprevalenceofGoogleAndroidoperatingsystem,thepublichasimmenselyconcernedonthedevelopmentofapplicationsthatbasedonAndroidSDKsystemsandAndroidapplication.However,theAndroidgamedevelopmentmarketisstillimmature.Thus,anentertainedandmentaltraininggameofAndroidoperatingsystemwillindeedbecomethemainstreamofapplicationsystems.ThisissueisaSokobangame,whichisdevelopedforAndroidsystemandisinventedbasedonthecombinationofEclipseSDKdevelopmentplatform.
Thegameisdividedintoinitializationmodule,functionmodule,gamedesignmodule,gamedatamoduleandfunctioncontrolmodule.Besides,inordertocompletemissionsofthegame,playershavetocontrolthemovementofaturtletopushaboxandtoputallboxesintotherightdestination.Particularly,thedifficultyofeachlevelisseparateddifferently,whichmaintainthefreshnessofthegameandalsosupportcustomeditmap.Accordingtoplayers’requirement,thenewmapcanbemorecreativeandchallenging.Thegameisnotonlysuitableforallkindsofpeopleforleisuretime,butalsocanhelppeopletoexpandimaginationandtoimprovecreativethinking.
Keywords
Android,Sokobangame,recreation,creativethinking
一、绪论
(一)课题研究背景和意义
本课题来源于一款来自日本的古老游戏——推箱子,其设计目的是训练人的逻辑思维能力。
游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置。
这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务。
随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发了出各种版本、各种类型的推箱子。
这其中也包括很多手机版本的实现,伴随着手机与计算机的普及,很快推箱子游戏便进入了千家万户。
推箱子游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。
本文基于Android技术和eclipseSDK开发环境,开发了一个操作简单、界面美观、功能较齐全、可在AndroidSDK2.2平台上运行的推箱子游戏。
整个游戏程序分为二个功能模块,五个类模块,可流畅运行游戏并且实现玩家自己编辑地图的功能。
通过本游戏的开发,达到学习Android开发技术和熟悉软件开发流程的目的。
(二)本课题发展现状
相信大家对Android的发展历史多少都有一些了解,Android曾经是一家创立于旧金山的公司的名字,该公司于2005年8月份被Google收购,并从此踏上了飞速发展的道路。
经过这几年的发展,它已经发展成了一个平台、一个生态体系。
现在Android在移动领域已经得到了广泛的应用。
根据Google于2011年6月份公布的数字,现在每天激活的Android设备高达50万台,比5月份的数据增加了10万台。
Google还透露目前已经与36家OEM厂商和215家运营商合作,共激活了超过1亿台Android设备。
相比于Symbian的日落西山,以及苹果的封闭、WindowsPhone的前途未卜,Android无疑代表了当前行业发展的主流趋势:
开放平台取代了封闭平台。
让参与者均能通过自己的努力而获益。
从2008年9月公布1.0版本以来,经过近三年的跨越式发展,现在Android已经发展到了3.x版本,这是一个针对平板电脑而做了大量优化的版本,包括对更大屏幕的支持的类库、多任务优化等。
目前市场上占主流的还是2.2版本,当然,相信随着时间的推移,2.3及后续版本会得到越来越多的设备的支持。
伴随着GoogleAndroid操作系统的盛行,基于AndroidSDK的系统开发和基于Android应用的开发等已逐渐倍受大家关注,而手机游戏开发历来是移动开发中分量最重的部分,面对如此火爆的Android市场自然也不甘示弱,由于Android的应用层开发是基于Java的开发,所以必有其可以快速移植J2ME开发的游戏的优势,但是移植的游戏必定也不能发挥Android操作系统独特的特性,所以目前基于Android游戏开发的市场还是不够成熟的,面对这种情况,在了解AndroidSDK基础上,我打算开发一款完全适应于Android操作系统的推箱子游戏。
二、游戏业务流程和设计方案
(一)业务流程和功能介绍
本设计基本实现了可以在AndroidSDK2.2平台上运行的推箱子游戏,本游戏分五个模块:
1、初始化模块;2、功能实现模块;3、游戏设计模块;4、游戏数据模块;5、功能控制模块。
本游戏是一款益智类游戏,所以操作十分简单。
游戏中玩家可以用键盘的上、下、左、右键控制小乌龟的移动位置,也可以直接触摸手机屏幕完成相应操作。
游戏规则也十分简单,玩家在一个有限空间内,将木箱放到指定的位置。
箱子只能推不能拉,而且一次只能推动一个箱子,胜利条件是把所有箱子都推到目的地。
(二)概要设计
此次的设计是开发一款可在AndroidSDK2.2平台上运行的推箱子游戏程序,可流畅运行游戏,编辑地图等。
(三)界面设计概要
在策划推箱子游戏时,首要考虑到要设计一个优美的游戏界面,操作起来更加人性化,即玩家可以用键盘的上、下、左、右键控制小乌龟的移动位置,也可以直接触摸手机屏幕完成相应操作。
在画面方面也要更加清新,方便各个年龄段的玩家使用。
我对这个游戏的定义是一个轻量级的益智游戏,不存在复杂的情节,做的主要工作为设计游戏各关仓库的形状、大小、可通过区域、各关中箱子的初始位置与目的地。
当然在正式开始编写程序时,需要上网搜集了游戏中要用到的图片、声音等,收集一些有用的素材。
下面是运行程序后,具体的界面模块,如图2.1:
图2.1
(四)机能概要
1.地图编辑器
(1)可通过地图编辑器生成地图;
(2)地图由小正方块拼接组成;
(3)地图中每一格可以是墙、通道、木箱、目标位置;
(4)游戏主角所在位置同时必须是通道或者目标位置;
(5)一张地图中主角数目有且仅有一个;
(6)一张地图中箱子数目必须与目标位置数目相等;
(7)允许对正在编辑的地图清除或者替换某一格中的内容;
(8)地图中一格不允许墙、通道、木箱、目标位置中两个及以上共存,最后添加的类型为该格代表的类型;
(9)通过地图编辑器生成的地图可以被游戏程序调用;
2.基本要求
(1)每关卡箱子数目不定;
(2)主角和箱子只能呆在通道及目标位置上移动,不能穿墙;
(3)主角不能穿过箱子;
(4)箱子数量和目标位置数量相等(但每个箱子并不和唯一的目标位置一一对应);
(5)主角可以移动和推动木箱(响应键盘方向键);
(6)主角只能往前推动箱子,不能向后或者向侧面拉箱子;
(7)主角不能同时推动两个箱子;
(8)箱子移动方向正前方紧挨墙壁,不可推动;
(9)允许撤销以及重做游戏步骤;
(10)将所有箱子推到设定位置则通过本关,自动进入下一关卡;
(11)记录每一关中玩家的移动步数;
3.扩展功能
(1)保存自定义地图,重启程序后依然可以编辑和调用运行该地图;
(2)屏幕分辨率自适应;
(3)资源文件支持简体中文和英文;
(五)游戏界面设计
启动游戏后便可直接进入游戏主界面,主界面上玩家可以自由选择对游戏的操作。
该游戏的运行步骤与界面设计如下:
1.启动游戏后游戏主界面,效果如图所示。
图2.2
2.点击“开始游戏”,即可进入系统设置的关卡中,默认从第一关开始,同时在左下角显示当前关卡和玩家已走的步数。
此外,该界面共有6个选项键,分别是撤销、恢复、关卡重置、前一关卡、后一关卡、返回主菜单,玩家可以通过对应的数字按键或直接触控屏幕实现对应功能。
玩家现在就可以开始游戏旅途,充分开动脑筋,挑战每一关卡,关卡难度设计由易到难。
效果如图所示。
图2.3
3.点击“载入自定义游戏”,即可进入玩家自己已经编辑好的游戏中,界面设计和系统设置的关卡相同,过关之后,自动进入系统设置的第一关卡。
效果如图所示。
图2.4
4.点击“编译自定义游戏”,即可进入玩家自行编译游戏仓库中。
玩家可以在15*15的格中按照自己的意愿设计关卡(需要符合游戏自身规定)。
该界面共有9个选项键,分别是墙、路、目的地、箱子、乌龟、锁定、删除、保存、返回主菜单,玩家可以通过对应的数字按键或直接触控屏幕实现对应功能。
效果如图所示。
图2.5
5.点击“游戏设置”,则进入游戏设置界面。
在该界面玩家可以根据自己的喜好选择系统音效、背景音、语言或者恢复默认设置,也可直接返回游戏主菜单。
在系统音效中,可以选择退出设置、开或是关;在背景音设置中,可以选择退出设置、预设音乐1、预设音乐2、预设音乐3、预设音乐4或是关;在语言设置中,可以选择退出设置、简体中文或是English;在载入默认设置中,可以选择是或是否。
效果如图所示。
图2.6
6.点击“帮助”,则进入游戏帮助界面。
在该界面玩家了解到游戏玩法、编辑游戏和游戏过程中涉及到的功能键作用。
按任意键或者触摸屏幕即可返回游戏主菜单。
效果如图所示。
图2.7
7.点击“关于”,则进入游戏关于界面。
该界面介绍了关于本游戏的相关信息。
效果如图所示。
图2.8
8.点击“退出游戏”,则会退出游戏。
(六)设计方案
1.模块划分
本游戏分五个模块
(1)初始化模块,对游戏界面进行初始化操作,包括界面切换、控制声音播放和游戏的暂停与恢复,以及手机返回键的设置。
(2)功能实现模块,主要是对游戏中各个环节进行绘制,设计出系统地图,记录玩家所用步骤,对玩家触屏的设定,针对不同的手机分辨率绘制界面,音乐功能调用,游戏中所有文字的提示信息以及游戏中背景和文字颜色大小等设置的实现。
(3)游戏设计模块,实现玩家控制小乌龟的操作,使之能够操作箱子到各个位置,以完成游戏设定的任务。
(4)游戏数据模块,主要是对玩家编辑的自定义地图和玩家选择系统设置状态的保存,以及游戏数据合理性的判断。
(5)功能控制模块,控制游戏功能的实现,包括创建菜单、调用系统音乐、获取当前系统状态、获取游戏界面图标等参数、保存游戏。
2.系统功能结构图
图2.9
三、系统开发环境说明
(一)Android的开发环境说明
为了学习Android的UI和功能,我们可以通过AndroidVirtualDevice(AVD)来实现。
AVD是Google提供给开发人员来调试他们开发的应用程序的,它可以运行在我们的PC机上,提供与真实手机形同的UI和操作方式,只是底层的硬件驱动不同。
我们可以用鼠标代替手机在AVD上实现点、划、按等触摸操作。
实现这一切的前提是我们需要搭建一个Android的开发环境。
(二)开发环境
开发所用操作系统:
WindowsXPSP2
IDE:
Eclipse
开发语言:
Java
开发所用插件:
ADT12.0.0
SDK:
AndroidSDK2.2,JDK1.5及以上
办公软件:
Office2007
四、程序设计说明及代码
(一)游戏主要公共类的设计与实现
1.主类Sokoban的设计与实现
该类是通过继承和扩展基类Activity来实现的,是整个程序的入口。
Androidapi中所提供的Activity生命周期图,如下:
图4.1
但在实际应用中,当一个Activity结束前,如果需要保存状态,就在onsaveInsanceState中。
它将状态数据以key-value的形式放入到saveInsanceState中,这样,当一个Activity被创建时,就能从onCreate的参数saveInsanceState中获得状态数据。
主要代码截图如下:
图4.2
在改变屏幕方向、弹出软键盘和隐藏软键盘时,不再去执行onCreate()方法而是直接执行onConfigurationChanged()。
如果不声明此段代码,按照Activity的生命周期,则每次会去执行一次onCreate()方法,而onCreate()方法通常会在显示之前做一些初始化工作,重复的初始化,会使得程序效率大大降低。
部分代码如下:
判断是否改变了屏幕方向、弹出软键盘和隐藏软键盘方法如下:
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE==newConfig.orientation||ActivityInfo.SCREEN_ORIENTATION_PORTRAIT==newConfig.orientation
2.主类MainGame的设计与实现
该类主要用于完成游戏的各个画面,包括获取手机屏幕大小、得到当前屏幕分辨率、屏幕方向、当前程序状态、当前程序界面、界面选择,以及游戏音乐的初始化等工作。
3.主类ThreadCanvas的实现
该类主要是对游戏线程的控制,包括线程刷新、线程暂停、线程重启、线程结束。
4.主类GameView的设计与实现
该类为抽象类继承自View,便于子类在继承GameView的同时也能继承View。
(二)游戏主要功能类的设计与实现
1.功能类BitmapProvider的设计与实现
该类主要是界面按钮设计,包括图形界面,运行游戏与自定义游戏界面中选项。
主要代码截图如下:
图4.3
图4.4
将原本sokoban_game_icons裁剪成5*5的小图标,在调用时按照当前手机屏幕大小,绘制出游戏中各个界面所需的图标。
通过publicstaticBitmapgetBitmap(intbitmapId,intwidth,intheight)方法获取地图界面图标。
主要代码截图如下:
图4.5
2.功能类clienDB的设计与实现
该类主要是把应用程序中要用的常量编写到一起,一方面有利于调试程序,另一方面避免了魔法数字带来的不必要的麻烦。
3.功能类GameStateDataProvider的设计与实现
该类是绘制地图的重要步骤,实现了本游戏中系统默认的100个关卡。
预先设计好每一关的模板,然后在15*15的地图中一行一行的输入数据,其中还包括在路径上初始化箱子与小乌龟的位置。
构造一个三维数组gameStateDataArray,通过它来保存关卡、行、列数据信息。
部分代码截图及说明如下:
这是第一关第四、第五行各列的地图数据信息。
GameDataStruct.DATA_FLAG.PATH|GameDataStruct.DATA_FLAG.BOX表示该列在路径上设置箱子的初始位置。
图4.6
4.功能类GameTouchEventHandler的设计与实现
该类主要功能是根据玩家触摸屏幕的不同位置,将其转换成小乌龟的移动方向。
部分代码截图如下:
图4.7
5.功能类LayoutDesign的设计与实现
该类主要功能为获取当前手机分辨率并根据手机分辨率设置游戏中的宽和高。
在该类中,通过privatestaticint[]getHorizontalDisConfigParamTable(intdisplayItemId,intscreenResolutionType)方法设置游戏中的宽度,通过privatestaticint[]getVerticalDisConfigParamTable(intdisplayIt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 箱子 游戏 程序设计