




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、游戏业务流程和设计方案(一)业务流程和功能介绍本设计基本实现了可以在Android SDK 2.2平台上运行的推箱子游戏,本游戏分五个模块:1、初始化模块;2、功能实现模块;3、游戏设计模块;4、游戏数据模块;5、功能控制模块。本游戏是一款益智类游戏,所以操作十分简单。游戏中玩家可以用键盘的上、下、左、右键控制小乌龟的移动位置,也可以直接触摸手机屏幕完成相应操作。游戏规则也十分简单,玩家在一个有限空间内,将木箱放到指定的位置。箱子只能推不能拉,而且一次只能推动一个箱子,胜利条件是把所有箱子都推到目的地。(二)界面设计概要在策划推箱子游戏时,首要考虑到要设计一个优美的游戏界面,操作起来更加人性化,即玩家可以用键盘的上、下、左、右键控制小乌龟的移动位置,也可以直接触摸手机屏幕完成相应操作。在画面方面也要更加清新,方便各个年龄段的玩家使用。我对这个游戏的定义是一个轻量级的益智游戏,不存在复杂的情节,做的主要工作为设计游戏各关仓库的形状、大小、可通过区域、各关中箱子的初始位置与目的地。当然在正式开始编写程序时,需要上网搜集了游戏中要用到的图片、声音等,收集一些有用的素材。下面是运行程序后,具体的界面模块,如下图:(三)机能概要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. 点击“开始游戏”,即可进入系统设置的关卡中,默认从第一关开始,同时在左下角显示当前关卡和玩家已走的步数。此外,该界面共有6个选项键,分别是撤销、恢复、关卡重置、前一关卡、后一关卡、返回主菜单,玩家可以通过对应的数字按键或直接触控屏幕实现对应功能。玩家现在就可以开始游戏旅途,充分开动脑筋,挑战每一关卡,关卡难度设计由易到难。效果如图所示。3. 点击“载入自定义游戏”,即可进入玩家自己已经编辑好的游戏中,界面设计和系统设置的关卡相同,过关之后,自动进入系统设置的第一关卡。效果如图所示。4. 点击“编译自定义游戏”,即可进入玩家自行编译游戏仓库中。玩家可以在15*15的格中按照自己的意愿设计关卡(需要符合游戏自身规定)。该界面共有9个选项键,分别是墙、路、目的地、箱子、乌龟、锁定、删除、保存、返回主菜单,玩家可以通过对应的数字按键或直接触控屏幕实现对应功能。效果如图所示。5. 点击“游戏设置”,则进入游戏设置界面。在该界面玩家可以根据自己的喜好选择系统音效、背景音、语言或者恢复默认设置,也可直接返回游戏主菜单。在系统音效中,可以选择退出设置、开或是关;在背景音设置中,可以选择退出设置、预设音乐1、预设音乐2、预设音乐3、预设音乐4或是关;在语言设置中,可以选择退出设置、简体中文或是English;在载入默认设置中,可以选择是或是否。效果如图所示。6. 点击“帮助”,则进入游戏帮助界面。在该界面玩家了解到游戏玩法、编辑游戏和游戏过程中涉及到的功能键作用。按任意键或者触摸屏幕即可返回游戏主菜单。效果如图所示。7. 点击“关于”,则进入游戏关于界面。该界面介绍了关于本游戏的相关信息。效果如图所示。 8. 点击“退出游戏”,则会退出游戏。(五)设计方案1. 模块划分本游戏分五个模块(1)初始化模块,对游戏界面进行初始化操作,包括界面切换、控制声音播放和游戏的暂停与恢复,以及手机返回键的设置。(2)功能实现模块,主要是对游戏中各个环节进行绘制,设计出系统地图,记录玩家所用步骤,对玩家触屏的设定,针对不同的手机分辨率绘制界面,音乐功能调用,游戏中所有文字的提示信息以及游戏中背景和文字颜色大小等设置的实现。(3)游戏设计模块,实现玩家控制小乌龟的操作,使之能够操作箱子到各个位置,以完成游戏设定的任务。(4)游戏数据模块,主要是对玩家编辑的自定义地图和玩家选择系统设置状态的保存,以及游戏数据合理性的判断。(5)功能控制模块,控制游戏功能的实现,包括创建菜单、调用系统音乐、获取当前系统状态、获取游戏界面图标等参数、保存游戏。2. 系统功能结构图二、系统开发环境说明(一)Android的开发环境说明为了学习Android的 UI和功能,我们可以通过Android Virtual Device(AVD)来实现。AVD是Google提供给开发人员来调试他们开发的应用程序的,它可以运行在我们的PC机上,提供与真实手机形同的UI和操作方式,只是底层的硬件驱动不同。我们可以用鼠标代替手机在AVD上实现点、划、按等触摸操作。实现这一切的前提是我们需要搭建一个Android的开发环境。(二)开发环境开发所用操作系统:Windows IDE:Eclipse3.7.2jee版开发语言:Java开发所用插件:ADT 22.6.2SDK:Android SDK 2.2及以上,JDK 1.5及以上三、程序设计说明及代码(一)游戏主要公共类的设计与实现1. 主类Sokoban 的设计与实现该类是通过继承和扩展基类Activity来实现的,是整个程序的入口。Android api中所提供的Activity生命周期图,如下:但在实际应用中,当一个Activity结束前,如果需要保存状态,就在onsaveInsanceState中。它将状态数据以key-value的形式放入到saveInsanceState中,这样,当一个Activity被创建时,就能从onCreate的参数saveInsanceState中获得状态数据。主要代码截图如下:在改变屏幕方向、弹出软键盘和隐藏软键盘时,不再去执行onCreate()方法而是直接执行onConfigurationChanged()。如果不声明此段代码,按照Activity的生命周期,则每次会去执行一次onCreate()方法,而onCreate()方法通常会在显示之前做一些初始化工作,重复的初始化,会使得程序效率大大降低。部分代码如下:判断是否改变了屏幕方向、弹出软键盘和隐藏软键盘方法如下:ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE=newConfig.orientation| ActivityInfo.SCREEN_ORIENTATION_PORTRAIT = newConfig.orientation2. 主类MainGame的设计与实现该类主要用于完成游戏的各个画面,包括获取手机屏幕大小、得到当前屏幕分辨率、屏幕方向、当前程序状态、当前程序界面、界面选择,以及游戏音乐的初始化等工作。3. 主类ThreadCanvas的实现该类主要是对游戏线程的控制,包括线程刷新、线程暂停、线程重启、线程结束。4. 主类GameView的设计与实现该类为抽象类继承自View,便于子类在继承GameView的同时也能继承View。(二)游戏主要功能类的设计与实现1. 功能类BitmapProvider的设计与实现该类主要是界面按钮设计,包括图形界面,运行游戏与自定义游戏界面中选项。主要代码截图如下:将原本sokoban_game_icons裁剪成5*5的小图标,在调用时按照当前手机屏幕大小,绘制出游戏中各个界面所需的图标。通过public static Bitmap getBitmap(int bitmapId, int width, int height)方法获取地图界面图标。主要代码截图如下:2. 功能类clienDB的设计与实现该类主要是把应用程序中要用的常量编写到一起,一方面有利于调试程序,另一方面避免了魔法数字带来的不必要的麻烦。3. 功能类GameStateDataProvider的设计与实现该类是绘制地图的重要步骤,实现了本游戏中系统默认的100个关卡。预先设计好每一关的模板,然后在15*15的地图中一行一行的输入数据,其中还包括在路径上初始化箱子与小乌龟的位置。构造一个三维数组gameStateDataArray,通过它来保存关卡、行、列数据信息。部分代码截图及说明如下:这是第一关第四、第五行各列的地图数据信息。GameDataStruct.DATA_FLAG.PATH | GameDataStruct.DATA_FLAG.BOX表示该列在路径上设置箱子的初始位置。4. 功能类GameTouchEventHandler的设计与实现该类主要功能是根据玩家触摸屏幕的不同位置,将其转换成小乌龟的移动方向。部分代码截图如下:5. 功能类LayoutDesign的设计与实现该类主要功能为获取当前手机分辨率并根据手机分辨率设置游戏中的宽和高。在该类中,通过private static int getHorizontalDisConfigParamTable(int displayItemId, int screenResolutionType)方法设置游戏中的宽度,通过private static int getVerticalDisConfigParamTable(int displayItemID, int screenResolutionType)方法设置游戏中的高度。这么做的好处是方便之后根据该分辨率来绘制游戏界面。部分代码截图及说明如下:6. 功能类MusicPlayer的设计与实现该类主要是实现音乐文件的播放。部分代码截图如下:7. 功能类StringsProvider的设计与实现该类主要实现整个游戏程序各个界面中字符内容的显示。8. 功能类TextUtil的设计与实现该类主要实现了游戏程序中的文字颜色、透明度、背景颜色等设置。9. 功能类GameRunner的设计与实现该类继承自抽象类GameView,负责游戏的运行,包括小乌龟的运动、游戏保存、音乐播放、当前系统设置、跳关、步数记录等。部分代码截图及说明如下:10. 功能类GameMainMenu的设计与实现该类继承自抽象类GameView,主要功能是创建菜单和菜单中的构成部分。主要关键代码截图及说明如下:通过private void createMenu()方法创建菜单,通过private void menuConstruct()创建菜单中的构成部分。11. 功能类GameEditor的设计与实现该类继承自抽象类GameView,主要是实现了地图编辑的控制,获取当前系统状态,获取游戏界面图标等参数,能够判断错误信息类型,保存游戏。主要代码截图及说明如下:通过private void updateGeneratorCursor()方法实现了编辑游戏地图时玩家当前游标所选图标。(三)游戏主要数据类的设计与实现1. 数据类GameDataSaver的设计与实现该类主要用于对地图数据的保存与提取,在保存时,判断玩家编辑的地图是否合理,如果不合理则提示相应信息,只有合理的地图才能保存。在提取地图信息的时候也进行一次检查,如果编辑地图不合理则载入默认设置。关键代码及说明如下:通过public static boolean exportDataToFile(int editDataArray)方法将地图数据写入到文件中;通过public static boolean checkUserFile()检查用户编辑数据是否合理;通过public static int importDataFromFile()从文件中读取数据载入地图。2. 数据类GameDataStruct的设计与实现该类主要功能是设定数据结构,例如行列数必须在15*15之间,玩家绘制地图时,当前所选游标实现添加、删除、替代等功能,判断玩家是否完成任务。主要部分代码截图及说明如下:通过public boolean isMissionCompleted()方法判断任务是否完成。通过public void addObj(int posIndex, int objId)方法,实现在编辑地图上添加玩
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年三基三严考试题题库(含答案)
- 2025年公共营养师之三级营养师通关考试题库带答案解析
- 2024年特种设备安全技术考试试题和答案
- 摄影基础知识培训课件讲座
- 施工技术期末试题及答案
- 2025关于共同合作合同范本
- 2025装载机租赁合同书范本
- 2025租赁合同纠纷范文
- 知识题库-人社练兵比武劳动竞赛试题及答案(二十四)
- 搬运车安全知识培训内容课件
- 轧钢厂安全检查表
- 艺术课程标准(2022年版)
- 卫生部手术分级目录(2023年1月份修订)
- YC/T 199-2006卷烟企业清洁生产评价准则
- YY 0666-2008针尖锋利度和强度试验方法
- GB/T 6663.1-2007直热式负温度系数热敏电阻器第1部分:总规范
- GB/T 5184-1996叉车挂钩型货叉和货叉架安装尺寸
- GB/T 19355.2-2016锌覆盖层钢铁结构防腐蚀的指南和建议第2部分:热浸镀锌
- 小沈阳《四大才子》欢乐喜剧人台词
- 机械制造技术基础(课程精完整版)课件
- 护士注册健康体检表下载【可直接打印版本】
评论
0/150
提交评论