Android推箱子游戏程序设计_第1页
Android推箱子游戏程序设计_第2页
Android推箱子游戏程序设计_第3页
Android推箱子游戏程序设计_第4页
Android推箱子游戏程序设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、最新Android推箱子游戏程序设计课题来源本课题来源于一款来自日本的古老游戏推箱子,其设计目的是训练人的逻辑思维能力。游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置。这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务。如今,伴随着Google Android操作系统的盛行,基于Android SDK的系统开发和基于Android应用的开发等已逐渐倍受大家关注,而 游戏开发历来是移动开发中分量最重的局部,面对如此火爆的Android市场自然也不甘示弱,由于Android的应用层开发是基于Java的开发,所以必有其可以快速移植J2ME开发的游戏的

2、优势,但是移植的游戏必定也不能发挥Android操作系统独特的特性,所以目前基于Android游戏开发的市场还是不够成熟的,面对这种情况,在了解Android SDK根底上,我打算开发一款完全适应于Android操作系统的推箱子游戏。本课题的根本内容地图编辑器可选可通过地图编辑器生成地图地图由小正方块拼接组成地图中每一格可以是墙、通道、木箱、目标位置游戏主角所在位置同时必须是通道或者目标位置一张地图中主角数目有且仅有一个一张地图中箱子数目必须与目标位置数目相等允许对正在编辑的地图去除或者替换某一格中的内容地图中一格不允许墙、通道、木箱、目标位置中两个及以上共存,最后添加的类型为该格代表的类型通

3、过地图编辑器生成的地图可以被游戏程序调用根本要求每关卡箱子数目不定主角和箱子只能呆在通道及目标位置上移动,不能穿墙主角不能穿过箱子箱子数量和目标位置数量相等但每个箱子并不和唯一的目标位置一一对应主角可以移动和推动木箱响应键盘方向键主角只能往前推动箱子,不能向后或者向侧面拉箱子主角不能同时推动两个箱子箱子移动方向正前方紧挨墙壁,不可推动允许撤销以及重做游戏步骤将所有箱子推到设定位置那么通过本关,自动进入下一关卡记录每一关中玩家的移动步数扩展功能可选保存自定义地图,重启程序后依然可以编辑和调用运行该地图响应点击触摸事件,主角可以从当前位置移动多步到达目标位置绕过障碍物自动寻径其他屏幕分辨率自适应资

4、源文件必须支持简体中文和英文本课题的重点和难点整个游戏能够有效地完成所设计的各项功能,系统具有较好的视觉效果并且界面友好,操作简单。算法、界面动态效果等设计与实现比拟繁琐。论文提纲序论:课题研究背景及意义本论游戏业务流程和设计方案:分模块实现各个目标的具体需求:欢送动画界面设计与实现,菜单界面设计与实现,游戏界面的框架实现等开发环境:开发环境及系统运行环境说明程序设计说明及代码:android推箱子游戏程序所用到的几项主要技术原理设计评价:android推箱子游戏程序的特性结论:概括说明设计的情况和价值,并指出其中存在的问题和今后改良方向进度安排提交毕业设计设计报告开题报告、任务书 2022年

5、3月3日着手毕业设计,开始进入工程 2022年3月4日完成毕业设计,开始设计报告 2022年5月1日前提交毕业设计设计报告第一稿 2022年5月5日前提交毕业设计设计报告第二稿 2022年5月12日前提交毕业设计设计报告第三稿 2022年5月15日前7、提交毕业设计设计报告正稿 2022年5月19日前指导教师意见:请手写意见和签名对本课题的深度、广度及工作量的意见指导教师:签字年 月 日教研室审查意见:请手写意见和签名 教研室负责人:签字年 月 日毕 业 论 文 开 题 报 告附表3.毕业设计论文任务书学 生 姓 名学号指导教师设计论文题目Android推箱子游戏程序设计主要 研究 内容1、游

6、戏情节。主要要做的工作为设计游戏各关仓库的形状、大小、可通过区域、以及各关中箱子的初始位置与目的地。2、目标受众。这个游戏受众面比拟广,应该是老少皆宜的。考虑到受众广的原因,应该将操作方式设计得更加人性化,画面更加清晰。3、呈现技术。推箱子游戏采用的是2D的呈现技术,可采用 键盘和触屏两种方式进行操作。研 究 方 法1、进行总体的分析和设计,将根本信息模块的具体内容设计完成。2、完成其它各个子模块的功能。不同阶段中注意对系统进行备份。3、通过DDMS调试来发现问题,并要重视做好笔记。主要技术指标(或研究目标)1、开发一款可在Android SDK 2.2平台上运行的推箱子游戏程序,可流畅运行游

7、戏,编辑地图等。2、实现游戏规那么:在一个有限空间内,将一些木箱放到指定的位置。箱子只能推不能拉,而且一次只能推动一个箱子,胜利条件是把所有箱子都推到目的地。3、整个游戏能够有效地完成所涉及的各项功能,系统具有较好的视觉效果且界面友好,操作简便。主要 参考 文献1、?Android应用开发详解?,郭宏志,电子工业出版社2、?Google Android SDK开发范例大全(第2版)?,余志龙 等、王世江 改,人民邮电出版社3、Android帮助文档注:1、本表由指导教师根据学生的开题报告填写,下发给学生,并定期检查学生进度。本表可用微机打印;2、由理工科指导教师填写。附表4.毕业设计论文成绩评

8、定表学院: 专业: 年级: 姓名学号设计论文总成绩设计论文题目指导教师评语评定成绩: 60%= 签名: 年 月 日答辩 小 组 评 语辩论成绩: 40%= 组长签名: 年 月 日注:指导教师、辩论小组给予的成绩和设计论文总成绩统一实行百分制,总成绩中指导教师评分占60%,辩论小组评分占40%。评语、成绩、签名及日期处必须手写。目 录 TOC o 1-1 h z u t 标题 2,1,标题 3,2,参考文献,2 HYPERLINK l _Toc324232051摘 要 PAGEREF _Toc324232051 h 1HYPERLINK l _Toc324232051Abstract PAGER

9、EF _Toc324232051 h 1HYPERLINK l _Toc324232052一、绪论 PAGEREF _Toc324232052 h 3HYPERLINK l _Toc324232053一课题研究背景和意义 PAGEREF _Toc324232053 h 3HYPERLINK l _Toc324232054二本课题开展现状 PAGEREF _Toc324232054 h 3HYPERLINK l _Toc324232055二、游戏业务流程和设计方案 PAGEREF _Toc324232055 h 3HYPERLINK l _Toc324232056一业务流程和功能介绍 PAGER

10、EF _Toc324232056 h 3HYPERLINK l _Toc324232057二概要设计 PAGEREF _Toc324232057 h 4HYPERLINK l _Toc324232058三界面设计概要 PAGEREF _Toc324232058 h 4HYPERLINK l _Toc324232059四机能概要 PAGEREF _Toc324232059 h 5HYPERLINK l _Toc324232060五游戏界面设计 PAGEREF _Toc324232060 h 5HYPERLINK l _Toc324232061六设计方案 PAGEREF _Toc324232061

11、 h 9HYPERLINK l _Toc324232062三、系统开发环境说明 PAGEREF _Toc324232062 h 10HYPERLINK l _Toc324232063一Android的开发环境说明 PAGEREF _Toc324232063 h 10HYPERLINK l _Toc324232064二开发环境 PAGEREF _Toc324232064 h 10HYPERLINK l _Toc324232065四、程序设计说明及代码 PAGEREF _Toc324232065 h 10HYPERLINK l _Toc324232066一游戏主要公共类的设计与实现 PAGEREF

12、 _Toc324232066 h 10HYPERLINK l _Toc324232067二游戏主要功能类的设计与实现 PAGEREF _Toc324232067 h 12HYPERLINK l _Toc324232068三游戏主要数据类的设计与实现 PAGEREF _Toc324232068 h 19HYPERLINK l _Toc324232069四游戏主要设计类的设计与实现 PAGEREF _Toc324232069 h 20HYPERLINK l _Toc324232070五、设计评价 PAGEREF _Toc324232070 h 22HYPERLINK l _Toc324232071

13、六、总结 PAGEREF _Toc324232071 h 22HYPERLINK l _Toc324232072参考文献 PAGEREF _Toc324232072 h 23HYPERLINK l _Toc324232073谢辞 PAGEREF _Toc324232073 h 24摘 要如今,伴随着Google Android操作系统的盛行,基于Android SDK的系统开发和基于Android应用的开发等已倍受大家关注。但是目前基于Android游戏开发的市场还是不够成熟的,因而一款休闲娱乐、锻炼思维且适应于Android操作系统的游戏必将成为主流。本课题是结合Eclipse SDK开发平

14、台开发的一款基于安卓平台的推箱子小游戏。该游戏主要分为初始化模块,界面模块,数据存储模块,功能模块及游戏控制模块。玩家通过控制小乌龟的移动来推动箱子,将所有箱子都推到目的地从而过关。每关的难易程度不同,可保持玩家对游戏的新鲜感,同时游戏还支持自定义编辑地图,玩家可以根据自身要求设计出更有创意、更富挑战的新地图。本游戏不仅是适合各类人群休闲娱乐的活动,还有助于提高人们思考问题能力与想象力,改善思维方式,拓展思维。关 键 词安卓,推箱子,休闲娱乐,拓展思维AbstractRecently, along with the prevalence of Google Android operating

15、system, the public has immensely concerned on the development of applications that based on Android SDK systems and Android application. However, the Android game development market is still immature. Thus, an entertained and mental training game of Android operating system will indeed become the ma

16、instream of application systems. This issue is a Sokoban game, which is developed for Android system and is invented based on the combination of Eclipse SDK development platform. The game is divided into initialization module, function module, game design module, game data module and function contro

17、l module. Besides, in order to complete missions of the game, players have to control the movement of a turtle to push a box and to put all boxes into the right destination. Particularly, the difficulty of each level is separated differently, which maintain the freshness of the game and also support

18、 custom edit map. According to players requirement, the new map can be more creative and challenging. The game is not only suitable for all kinds of people for leisure time, but also can help people to expand imagination and to improve creative thinking.Key wordsAndroid, Sokoban game, recreation, cr

19、eative thinking一、绪论一课题研究背景和意义本课题来源于一款来自日本的古老游戏推箱子,其设计目的是训练人的逻辑思维能力。游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置。这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务。随着计算机游戏的开展,很多编程爱好者基于该游戏的思想开发了出各种版本、各种类型的推箱子。这其中也包括很多 版本的实现,伴随着 与计算机的普及,很快推箱子游戏便进入了千家万户。推箱子游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢送。本文基于Android技术和eclipse SDK开发环境,开发了一个操作简单、

20、界面美观、功能较齐全、可在Android SDK 2.2平台上运行的推箱子游戏。整个游戏程序分为二个功能模块,五个类模块,可流畅运行游戏并且实现玩家自己编辑地图的功能。通过本游戏的开发,到达学习Android开发技术和熟悉软件开发流程的目的。二本课题开展现状相信大家对Android的开展历史多少都有一些了解, Android曾经是一家创立于旧金山的公司的名字,该公司于2022年8月份被Google收购,并从此踏上了飞速开展的道路。经过这几年的开展,它已经开展成了一个平台、一个生态体系。现在Android在移动领域已经得到了广泛的应用。根据Google于2022年6月份公布的数字,现在每天激活的

21、Android设备高达50万台,比5月份的数据增加了10万台。Google还透露目前已经与36家OEM厂商和215家运营商合作,共激活了超过1亿台Android设备。相比于Symbian的日落西山,以及苹果的封闭、Windows Phone的前途未卜,Android无疑代表了当前行业开展的主流趋势:开放平台取代了封闭平台。让参与者均能通过自己的努力而获益。从2022年9月公布1.0版本以来,经过近三年的跨越式开展,现在Android已经开展到了3.x版本,这是一个针对平板电脑而做了大量优化的版本,包括对更大屏幕的支持的类库、多任务优化等。目前市场上占主流的还是2.2版本,当然,相信随着时间的推

22、移,2.3及后续版本会得到越来越多的设备的支持。伴随着Google Android操作系统的盛行,基于Android SDK的系统开发和基于Android应用的开发等已逐渐倍受大家关注,而 游戏开发历来是移动开发中分量最重的局部,面对如此火爆的Android市场自然也不甘示弱,由于Android的应用层开发是基于Java的开发,所以必有其可以快速移植J2ME开发的游戏的优势,但是移植的游戏必定也不能发挥Android操作系统独特的特性,所以目前基于Android游戏开发的市场还是不够成熟的,面对这种情况,在了解Android SDK根底上,我打算开发一款完全适应于Android操作系统的推箱子

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

24、程序,可流畅运行游戏,编辑地图等。三界面设计概要在筹划推箱子游戏时,首要考虑到要设计一个优美的游戏界面,操作起来更加人性化,即玩家可以用键盘的上、下、左、右键控制小乌龟的移动位置,也可以直接触摸 屏幕完成相应操作。在画面方面也要更加清新,方便各个年龄段的玩家使用。我对这个游戏的定义是一个轻量级的益智游戏,不存在复杂的情节,做的主要工作为设计游戏各关仓库的形状、大小、可通过区域、各关中箱子的初始位置与目的地。当然在正式开始编写程序时,需要上网搜集了游戏中要用到的图片、声音等,收集一些有用的素材。下面是运行程序后,具体的界面模块,如图2.1:图2.1四机能概要1. 地图编辑器1可通过地图编辑器生成

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

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

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

28、地、箱子、乌龟、锁定、删除、保存、返回主菜单,玩家可以通过对应的数字按键或直接触控屏幕实现对应功能。效果如下图。图2.55. 点击“游戏设置,那么进入游戏设置界面。在该界面玩家可以根据自己的喜好选择系统音效、背景音、语言或者恢复默认设置,也可直接返回游戏主菜单。在系统音效中,可以选择退出设置、开或是关;在背景音设置中,可以选择退出设置、预设音乐1、预设音乐2、预设音乐3、预设音乐4或是关;在语言设置中,可以选择退出设置、简体中文或是English;在载入默认设置中,可以选择是或是否。效果如下图。图2.66. 点击“帮助,那么进入游戏帮助界面。在该界面玩家了解到游戏玩法、编辑游戏和游戏过程中涉及

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

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

31、不同。我们可以用鼠标代替 在AVD上实现点、划、按等触摸操作。实现这一切的前提是我们需要搭建一个Android的开发环境。二开发环境开发所用操作系统:Windows XP SP2IDE:Eclipse开发语言:JavaSDK:Android SDK 2.2,JDK 1.5及以上办公软件:Office 2022四、程序设计说明及代码一游戏主要公共类的设计与实现1. 主类Sokoban 的设计与实现该类是通过继承和扩展基类Activity来实现的,是整个程序的入口。Android api中所提供的Activity生命周期图,如下:图4.1但在实际应用中,当一个Activity结束前,如果需要保存状

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

33、。局部代码如下:判断是否改变了屏幕方向、弹出软键盘和隐藏软键盘方法如下:ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE = newConfig.orientation | ActivityInfo.SCREEN_ORIENTATION_PORTRAIT = newConfig.orientation2. 主类MainGame的设计与实现该类主要用于完成游戏的各个画面,包括获取 屏幕大小、得到当前屏幕分辨率、屏幕方向、当前程序状态、当前程序界面、界面选择,以及游戏音乐的初始化等工作。3. 主类ThreadCanvas的实现该类主要是对游戏线程的控制,包括线程刷

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

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

36、路径上设置箱子的初始位置。图4.64. 功能类GameTouchEventHandler的设计与实现该类主要功能是根据玩家触摸屏幕的不同位置,将其转换成小乌龟的移动方向。局部代码截图如下:图4.75. 功能类LayoutDesign的设计与实现该类主要功能为获取当前 分辨率并根据 分辨率设置游戏中的宽和高。在该类中,通过private static int getHorizontalDisConfigParamTable(int displayItemId, int screenResolutionType)方法设置游戏中的宽度,通过private static int getVertical

37、DisConfigParamTable(int displayItemID, int screenResolutionType)方法设置游戏中的高度。这么做的好处是方便之后根据该分辨率来绘制游戏界面。局部代码截图及说明如下:图4.86. 功能类MusicPlayer的设计与实现该类主要是实现音乐文件的播放。局部代码截图如下:图4.97. 功能类StringsProvider的设计与实现该类主要实现整个游戏程序各个界面中字符内容的显示。8. 功能类TextUtil的设计与实现该类主要实现了游戏程序中的文字颜色、透明度、背景颜色等设置。9. 功能类GameRunner的设计与实现该类继承自抽象类G

38、ameView,负责游戏的运行,包括小乌龟的运动、游戏保存、音乐播放、当前系统设置、跳关、步数记录等。局部代码截图及说明如下:图4.10图4.1110. 功能类GameMainMenu的设计与实现该类继承自抽象类GameView,主要功能是创立菜单和菜单中的构成局部。主要关键代码截图及说明如下:通过private void createMenu()方法创立菜单,通过private void menuConstruct()创立菜单中的构成局部。图4.1211. 功能类GameEditor的设计与实现该类继承自抽象类GameView,主要是实现了地图编辑的控制,获取当前系统状态,获取游戏界面图标等

39、参数,能够判断错误信息类型,保存游戏。主要代码截图及说明如下:通过private void updateGeneratorCursor()方法实现了编辑游戏地图时玩家当前游标所选图标。图4.13三游戏主要数据类的设计与实现1. 数据类GameDataSaver的设计与实现该类主要用于对地图数据的保存与提取,在保存时,判断玩家编辑的地图是否合理,如果不合理那么提示相应信息,只有合理的地图才能保存。在提取地图信息的时候也进行一次检查,如果编辑地图不合理那么载入默认设置。关键代码及说明如下:通过public static boolean exportDataToFile(int editDataAr

40、ray)方法将地图数据写入到文件中;通过public static boolean checkUserFile()检查用户编辑数据是否合理;通过public static int importDataFromFile()从文件中读取数据载入地图。2. 数据类GameDataStruct的设计与实现该类主要功能是设定数据结构,例如行列数必须在15*15之间,玩家绘制地图时,当前所选游标实现添加、删除、替代等功能,判断玩家是否完成任务。主要局部代码截图及说明如下:通过public boolean isMissionCompleted()方法判断任务是否完成。图4.14通过public void a

41、ddObj(int posIndex, int objId)方法,实现在编辑地图上添加玩家所需图标。图4.153. 数据类SystemSettingSaver的设计与实现该类主要功能是在游戏启动后读取当前系统设置信息,当玩家重新设定系统设置后,将重新保存系统设置,同时还可以实现恢复默认设置功能。四游戏主要设计类的设计与实现1. 设计类GameContainer的设计与实现该类是游戏程序的关键步骤,它实现了小乌龟与箱子移动的算法。移动中包括正移动,与“撤销的负移动。正移动:小乌龟上下左右的移动都涉及到一个判断算法,判断小乌龟前方是否有箱子或者墙,如果没有,那么可以移动;有的话,那么判断箱子是否可

42、移动。代码如下:/小乌龟运动判定public boolean moveMainPlayer(int moveDir)int fromPosIndex = mGameDataStruct.getObjPosIndex(clienDB.GameObjectID.MP);int toMPPosIndex = getDestPosIndex(fromPosIndex, moveDir);if(null = fromPosIndex |toMPPosIndex = null |toMPPosIndex = fromPosIndex)/下一步为空或者不能前进return false;if(true = m

43、GameDataStruct.isExist(toMPPosIndex, clienDB.GameObjectID.BOX)/前进方向是否存在箱子int toBoxPosIndex = getDestPosIndex(toMPPosIndex, moveDir);if(null = toBoxPosIndex|toBoxPosIndex = toMPPosIndex)return false;if( true = mGameDataStruct.isExist(toBoxPosIndex, clienDB.GameObjectID.BOX) |(false = mGameDataStruct.

44、isExist(toBoxPosIndex, clienDB.GameObjectID.PATH) &false = mGameDataStruct.isExist(toBoxPosIndex, clienDB.GameObjectID.DEST)/如果前方是箱子或者前方不是路径且不是目的地return false;moveObj(clienDB.GameObjectID.BOX, toMPPosIndex, toBoxPosIndex);moveObj(clienDB.GameObjectID.MP, fromPosIndex, toMPPosIndex);elseif(false = mG

45、ameDataStruct.isExist(toMPPosIndex, clienDB.GameObjectID.PATH) &false = mGameDataStruct.isExist(toMPPosIndex, clienDB.GameObjectID.DEST)return false;moveObj(clienDB.GameObjectID.MP, fromPosIndex, toMPPosIndex);return true;如果小乌龟或者箱子可以移动,那么调用public void moveObj(int objId, int fromPosIndex, int toPosIndex)方法,通过mGameDataStruct.removeObj(fromPosIndex, objId)方法删除原物体,再通过mGameDataStruct.addObj(toPosIndex, objId)方法在运动方向前方添加该物体,从而实现物体的移动2. 设计类Menu的设计与实现该类主要功能为在游戏各个界面菜单中游标的移动和显示。中选中某个选项时,调用系统设置的音乐提示。3. 设计类Toolbar的设计与实现该类主要功能是在游戏界面工具栏图标进行编号,方便使用键盘的玩家可以直观的通过数字键盘完成操作。五、设计评价

温馨提示

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

评论

0/150

提交评论