实验四推箱子-步骤

上传人:cn****1 文档编号:512668466 上传时间:2023-05-03 格式:DOCX 页数:19 大小:3.59MB
返回 下载 相关 举报
实验四推箱子-步骤_第1页
第1页 / 共19页
实验四推箱子-步骤_第2页
第2页 / 共19页
实验四推箱子-步骤_第3页
第3页 / 共19页
实验四推箱子-步骤_第4页
第4页 / 共19页
实验四推箱子-步骤_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《实验四推箱子-步骤》由会员分享,可在线阅读,更多相关《实验四推箱子-步骤(19页珍藏版)》请在金锄头文库上搜索。

1、一、游戏业务流程和设计方案(一)业务流程和功能介绍本设计基本实现了可以在Android SDK 2.2平台上运行的推箱子游戏,本游戏分五个模块:1、初始化模块;2、功能实现模块;3、游戏设计模块;4、游戏数据模块;5、功能控制模块。本游戏是一款益智类游戏,所以操作十分简单。游戏中玩家可以用键盘的上、下、左、右键控制小乌龟的移动位置,也可以直接触摸手机屏幕完成相应操作。游戏规则也十分简单,玩家在一个有限空间内,将木箱放到指定的位置。箱子只能推不能拉,而且一次只能推动一个箱子,胜利条件是把所有箱子都推到目的地。(二)界面设计概要在策划推箱子游戏时,首要考虑到要设计一个优美的游戏界面,操作起来更加人

2、性化,即玩家可以用键盘的上、下、左、右键控制小乌龟的移动位置,也可以直接触摸手机屏幕完成相应操作。在画面方面也要更加清新,方便各个年龄段的玩家使用。我对这个游戏的定义是一个轻量级的益智游戏,不存在复杂的情节,做的主要工作为设计游戏各关仓库的形状、大小、可通过区域、各关中箱子的初始位置与目的地。当然在正式开始编写程序时,需要上网搜集了游戏中要用到的图片、声音等,收集一些有用的素材。下面是运行程序后,具体的界面模块,如下图:(三)机能概要1. 地图编辑器(1)可通过地图编辑器生成地图;(2)地图由小正方块拼接组成;(3)地图中每一格可以是墙、通道、木箱、目标位置;(4)游戏主角所在位置同时必须是通

3、道或者目标位置;(5)一张地图中主角数目有且仅有一个;(6)一张地图中箱子数目必须与目标位置数目相等;(7)允许对正在编辑的地图清除或者替换某一格中的内容;(8)地图中一格不允许墙、通道、木箱、目标位置中两个及以上共存,最后添加的类型为该格代表的类型;(9)通过地图编辑器生成的地图可以被游戏程序调用;2. 基本要求(1)每关卡箱子数目不定;(2)主角和箱子只能呆在通道及目标位置上移动,不能穿墙;(3)主角不能穿过箱子;(4)箱子数量和目标位置数量相等(但每个箱子并不和唯一的目标位置一一对应);(5)主角可以移动和推动木箱(响应键盘方向键);(6)主角只能往前推动箱子,不能向后或者向侧面拉箱子;

4、(7)主角不能同时推动两个箱子;(8)箱子移动方向正前方紧挨墙壁,不可推动;(9)允许撤销以及重做游戏步骤;(10)将所有箱子推到设定位置则通过本关,自动进入下一关卡;(11)记录每一关中玩家的移动步数;3. 扩展功能(1)保存自定义地图,重启程序后依然可以编辑和调用运行该地图;(2)屏幕分辨率自适应;(3)资源文件支持简体中文和英文;(四)游戏界面设计启动游戏后便可直接进入游戏主界面,主界面上玩家可以自由选择对游戏的操作。该游戏的运行步骤与界面设计如下:1. 启动游戏后游戏主界面,效果如图所示。2. 点击“开始游戏”,即可进入系统设置的关卡中,默认从第一关开始,同时在左下角显示当前关卡和玩家

5、已走的步数。此外,该界面共有6个选项键,分别是撤销、恢复、关卡重置、前一关卡、后一关卡、返回主菜单,玩家可以通过对应的数字按键或直接触控屏幕实现对应功能。玩家现在就可以开始游戏旅途,充分开动脑筋,挑战每一关卡,关卡难度设计由易到难。效果如图所示。3. 点击“载入自定义游戏”,即可进入玩家自己已经编辑好的游戏中,界面设计和系统设置的关卡相同,过关之后,自动进入系统设置的第一关卡。效果如图所示。4. 点击“编译自定义游戏”,即可进入玩家自行编译游戏仓库中。玩家可以在15*15的格中按照自己的意愿设计关卡(需要符合游戏自身规定)。该界面共有9个选项键,分别是墙、路、目的地、箱子、乌龟、锁定、删除、保

6、存、返回主菜单,玩家可以通过对应的数字按键或直接触控屏幕实现对应功能。效果如图所示。5. 点击“游戏设置”,则进入游戏设置界面。在该界面玩家可以根据自己的喜好选择系统音效、背景音、语言或者恢复默认设置,也可直接返回游戏主菜单。在系统音效中,可以选择退出设置、开或是关;在背景音设置中,可以选择退出设置、预设音乐1、预设音乐2、预设音乐3、预设音乐4或是关;在语言设置中,可以选择退出设置、简体中文或是English;在载入默认设置中,可以选择是或是否。效果如图所示。6. 点击“帮助”,则进入游戏帮助界面。在该界面玩家了解到游戏玩法、编辑游戏和游戏过程中涉及到的功能键作用。按任意键或者触摸屏幕即可返

7、回游戏主菜单。效果如图所示。7. 点击“关于”,则进入游戏关于界面。该界面介绍了关于本游戏的相关信息。效果如图所示。 8. 点击“退出游戏”,则会退出游戏。(五)设计方案1. 模块划分本游戏分五个模块(1)初始化模块,对游戏界面进行初始化操作,包括界面切换、控制声音播放和游戏的暂停与恢复,以及手机返回键的设置。(2)功能实现模块,主要是对游戏中各个环节进行绘制,设计出系统地图,记录玩家所用步骤,对玩家触屏的设定,针对不同的手机分辨率绘制界面,音乐功能调用,游戏中所有文字的提示信息以及游戏中背景和文字颜色大小等设置的实现。(3)游戏设计模块,实现玩家控制小乌龟的操作,使之能够操作箱子到各个位置,

8、以完成游戏设定的任务。(4)游戏数据模块,主要是对玩家编辑的自定义地图和玩家选择系统设置状态的保存,以及游戏数据合理性的判断。(5)功能控制模块,控制游戏功能的实现,包括创建菜单、调用系统音乐、获取当前系统状态、获取游戏界面图标等参数、保存游戏。2. 系统功能结构图二、系统开发环境说明(一)Android的开发环境说明为了学习Android的 UI和功能,我们可以通过Android Virtual Device(AVD)来实现。AVD是Google提供给开发人员来调试他们开发的应用程序的,它可以运行在我们的PC机上,提供与真实手机形同的UI和操作方式,只是底层的硬件驱动不同。我们可以用鼠标代替

9、手机在AVD上实现点、划、按等触摸操作。实现这一切的前提是我们需要搭建一个Android的开发环境。(二)开发环境开发所用操作系统:Windows IDE:Eclipse版开发语言:Java开发所用插件:ADT SDK:Android SDK 2.2及以上,JDK 1.5及以上三、程序设计说明及代码(一)游戏主要公共类的设计与实现1. 主类Sokoban 的设计与实现该类是通过继承和扩展基类Activity来实现的,是整个程序的入口。Android api中所提供的Activity生命周期图,如下:但在实际应用中,当一个Activity结束前,如果需要保存状态,就在onsaveInsanceS

10、tate中。它将状态数据以key-value的形式放入到saveInsanceState中,这样,当一个Activity被创建时,就能从onCreate的参数saveInsanceState中获得状态数据。主要代码截图如下:在改变屏幕方向、弹出软键盘和隐藏软键盘时,不再去执行onCreate()方法而是直接执行onConfigurationChanged()。如果不声明此段代码,按照Activity的生命周期,则每次会去执行一次onCreate()方法,而onCreate()方法通常会在显示之前做一些初始化工作,重复的初始化,会使得程序效率大大降低。部分代码如下:判断是否改变了屏幕方向、弹出软

11、键盘和隐藏软键盘方法如下:ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE=newConfig.orientation| ActivityInfo.SCREEN_ORIENTATION_PORTRAIT = newConfig.orientation2. 主类MainGame的设计与实现该类主要用于完成游戏的各个画面,包括获取手机屏幕大小、得到当前屏幕分辨率、屏幕方向、当前程序状态、当前程序界面、界面选择,以及游戏音乐的初始化等工作。3. 主类ThreadCanvas的实现该类主要是对游戏线程的控制,包括线程刷新、线程暂停、线程重启、线程结束。4. 主类Gam

12、eView的设计与实现该类为抽象类继承自View,便于子类在继承GameView的同时也能继承View。(二)游戏主要功能类的设计与实现1. 功能类BitmapProvider的设计与实现该类主要是界面按钮设计,包括图形界面,运行游戏与自定义游戏界面中选项。主要代码截图如下:将原本sokoban_game_icons裁剪成5*5的小图标,在调用时按照当前手机屏幕大小,绘制出游戏中各个界面所需的图标。通过public static Bitmap getBitmap(int bitmapId, int width, int height)方法获取地图界面图标。主要代码截图如下:2. 功能类clie

13、nDB的设计与实现该类主要是把应用程序中要用的常量编写到一起,一方面有利于调试程序,另一方面避免了魔法数字带来的不必要的麻烦。3. 功能类GameStateDataProvider的设计与实现该类是绘制地图的重要步骤,实现了本游戏中系统默认的100个关卡。预先设计好每一关的模板,然后在15*15的地图中一行一行的输入数据,其中还包括在路径上初始化箱子与小乌龟的位置。构造一个三维数组gameStateDataArray,通过它来保存关卡、行、列数据信息。部分代码截图及说明如下:这是第一关第四、第五行各列的地图数据信息。表示该列在路径上设置箱子的初始位置。4. 功能类GameTouchEventH

14、andler的设计与实现该类主要功能是根据玩家触摸屏幕的不同位置,将其转换成小乌龟的移动方向。部分代码截图如下:5. 功能类LayoutDesign的设计与实现该类主要功能为获取当前手机分辨率并根据手机分辨率设置游戏中的宽和高。在该类中,通过private static int getHorizontalDisConfigParamTable(int displayItemId, int screenResolutionType)方法设置游戏中的宽度,通过private static int getVerticalDisConfigParamTable(int displayItemID, i

15、nt screenResolutionType)方法设置游戏中的高度。这么做的好处是方便之后根据该分辨率来绘制游戏界面。部分代码截图及说明如下:6. 功能类MusicPlayer的设计与实现该类主要是实现音乐文件的播放。部分代码截图如下:7. 功能类StringsProvider的设计与实现该类主要实现整个游戏程序各个界面中字符内容的显示。8. 功能类TextUtil的设计与实现该类主要实现了游戏程序中的文字颜色、透明度、背景颜色等设置。9. 功能类GameRunner的设计与实现该类继承自抽象类GameView,负责游戏的运行,包括小乌龟的运动、游戏保存、音乐播放、当前系统设置、跳关、步数记录等。部分代码截图及说明如下:10. 功能类GameMainMenu的设计与实现该类继承自抽象类GameView,主要功能是创建菜单和菜单中的构成部分。主要关键代码截图及说明如下:通过private void createMenu()方法创建菜单,通过private void menuConstruct()创建菜单中的构成部分。11. 功能类GameEditor的设计与实现该类

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号