收藏 分享(赏)

毕业论文——基于Cocos的大富翁游戏设计与开发.doc

上传人:wo7103235 文档编号:5809814 上传时间:2019-03-18 格式:DOC 页数:49 大小:1.60MB
下载 相关 举报
毕业论文——基于Cocos的大富翁游戏设计与开发.doc_第1页
第1页 / 共49页
毕业论文——基于Cocos的大富翁游戏设计与开发.doc_第2页
第2页 / 共49页
毕业论文——基于Cocos的大富翁游戏设计与开发.doc_第3页
第3页 / 共49页
毕业论文——基于Cocos的大富翁游戏设计与开发.doc_第4页
第4页 / 共49页
毕业论文——基于Cocos的大富翁游戏设计与开发.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、编 号 : ( ) 字 号本 科 生 毕 业 设 计 ( 论 文 )题目: 姓名: 学号: 班级: 年 月基于 Cocos 的大富翁游戏设计与开发中 国 矿 业 大 学本 科 生 毕 业 设 计姓 名: 学 号: 学 院: 计算机科学与技术学院 专 业: 信息安全 设计题目: 基于 Cocos 的大富翁游戏设计与开发 专 题: 指导教师: 职 称: 年 月 徐州中国矿业大学毕业设计任务书学院 计算机学院专业年级 姓名 任 务 下 达 日 期 : 年 月 日毕业设计日期: 年 月 日 至 年 月 日毕业设计题目:基于 Cocos 的大富翁游戏设计与开发毕业设计专题题目: 毕业设计主要内容和要求:

2、研究内容:(1)使用 cocos2dx-3.2 引擎作为底层,以 c+语言为逻辑编程;(2)实现精灵的移动、按钮创建和点击、游戏关卡选择、帧动画的播放,消息的注册,发送和监听,粒子效果的播放;(3)开发系统的,模块组织结构清晰的游戏,尽量多地使用 cocos2d api,以熟练掌握和运用。工作要求:在完成最低工作量:(1)设计与开发基于 Cocos 的大富翁游戏;(2)装订好的论文电子版设计论文;(3)程序源代码;(4)尽量完成该课程设计的其他要求及一些扩展功能。院长签字: 指导教师签字:中国矿业大学毕业设计指导教师评阅书指导教师评语(基础理论及基本技能的掌握;独立解决实际问题的能力;研究内容

3、的理论依据和技术方法;取得的主要成果及创新点;工作态度及工作量;总体评价及建议成绩;存在问题;是否同意答辩等):成 绩: 指导教师签字:年 月 日中国矿业大学毕业设计评阅教师评阅书评阅教师评语(选题的意义;基础理论及基本技能的掌握;综合运用所学知识解决实际问题的能力;工作量的大小;取得的主要成果及创新点;写作的规范程度;总体评价及建议成绩;存在问题;是否同意答辩等):成 绩: 评阅教师签字:年 月 日中国矿业大学毕业设计答辩及综合成绩答 辩 情 况回 答 问 题提 出 问 题 正 确基 本正 确有 一般 性错 误有 原则 性错 误没 有回 答答辩委员会评语及建议成绩:答辩委员会主任签字: 年

4、月 日学院领导小组综合评定成绩:学院领导小组负责人: 年 月 日摘 要制作一个游戏,在技术上来说,首先需要的是一款好的引擎,为什么需要引擎呢?引擎提供的是基础的一些功能,一个游戏通过使用引擎的功能模块,来进行游戏的制作,游戏的本体部分则需要交给自己的逻辑来处理,一个游戏引擎,能决定游戏的制作,甚至能决定最终的品质,而很多大作宣传的噱头就是使用了某款引擎,可见一款游戏引擎对游戏制作的重要性。对于 PC 端来说,虚幻 4,寒霜 3 引擎是目前比较好的游戏引擎,使用其制作的游戏,效果也是相当惊人。对于移动端来说,Unity 3D 和 Cocos2d 是目前最流行的两款引擎,在2014 年以前,两款引

5、擎各持半壁江山,主要原因是一个是 3D 引擎,一个是 2D 引擎,在游戏制作里中各有需要,两款引擎各出了无数优秀的作品,2014 年之后,Unity 3D 开放 2D模块,Cocos2d 开放 3D 模块,弥补了自身的不足,使得开发人员着手一种引擎即能完成 3D和 2D 的开发工作,而 Cocos2d 相对于 Unity 3D 也是有很多的优势,它是一款开源的,活跃的,跨平台的,免费的面向所有开发人员的引擎,对于即将着手游戏行业的程序开发人员来说,是一款再好不过的上手引擎。本文首先从整体上介绍了国内外 Cocos 技术的发展现状,然后丧心病狂地扯了足足 40页,最后结束。关键词:Cocos2d

6、;C+11;API;单机版游戏;大富翁;Abstract这边是待写的的英文翻译Keywords: HTML5; Canvas; JavaScript; stand-alone games;tank war;目 录1 绪论 .11.1 课题的目的和意义 .11.2 国内外发展现状 .21.3 课题主要的内容和功能介绍 .31.3.1 课题主要的内容 31.3.2 坦克大战游戏功能介绍 31.4 相关技术简介 .41.4.1 HTML5 标准简述及意义 41.4.2 JavaScript 标准简述及意义 41.4.3 CSS 标准简述及意义 51.5 开发工具 .61.6 本文章节安排 .72 系

7、统分析 .82.1 系统设计分析 .82.2 系统需求分析 .82.2.1 系统角色 82.2.2 需求分析 82.2.3 用例分析 93 系统概要设计 .113.1 系统总体功能设计 .113.1.1 程序功能模块分析 113.1.2 地图读取以及修改 113.1.3 游戏进行中的声音的控制分析 123.2 程序流程 .123.3 各模块及对应的功能 .144 系统详细设计 .164.1 数据管理模块设计 .164.2 地图功能模块 .174.2.1 读取地图 174.2.2 绘制地图 174.2.3 地图模块部分代码 204.3 坦克模块的设计 .214.3.1 读取数据管理模块信息 21

8、4.3.2 控制坦克 214.3.3 坦克模块的部分实现代码 224.4 炮弹模块的功能 .244.4.1 读取数据管理模块信息 244.4.2 控制炮弹飞行 254.4.3 炮弹模块的部分实现代码 254.5 声音控制模块 .284.6 系统奖励模块功能 .284.7 游戏中动画界面模块功能 .295 总结与展望 .325.1 总结 .325.2 展望 .32参考文献 .34翻译部分 .35英文原文 .35中文译文 .38致 谢 .41中国矿业大学 2015 届本科生毕业设计(论文) 第 1 页1 绪论1.1 课题的目的和意义由于2015年尚未结束,我先举几个例子分析一下2014年移动端游戏

9、的现状:1:2014年,中国移动游戏市场实际销售收入274.9亿元人民币,比2013年增长了144.6。2:2014年,中国移动游戏市场占有率达到24,比2013年上升了10.5个百分点。3:2014年,中国移动游戏用户数量约达3.58亿人,比2013年增长了15.1。近几年来,随着移动设备技术的精进,性能不断更新进步,移动游戏发展迅速,移动游戏市场成为整体市场增长最强动力。在市场分析来看,在中国,2013年安卓平台上的游戏,cocos2d的使用率为26%,而ios的使用率为49%。可见这款引擎的热手程度。在当前市场火热,移动端游戏市场前景一片大好的前提下,去了解当下最为热门的一块游戏引擎,是

10、非常明智的选择。而对于游戏而言,选择一个好的游戏引擎也是其开发制作中最重要的一环,有一句话应正了这一点,一款游戏的品质不能单单看他使用的是什么引擎,但是一款好的游戏引擎却往往可以决定这款游戏的最终效果。作为一款开源的跨平台游戏引擎,Cocos2d为无数手游开发者提供了稳定,方便,并且可靠的平台,据官方社区统计,到目前为止,基于cocos2dx开发的游戏,在全球范围内,已经至少有了一亿的安装量,在我的现在的公司,其中cocos2d的项目,石器哪里走,现在已经上线,正常盈利。另外值得一说的是,Cocos2d可以使用c+,Lua ,javascript ,heml5,C#以及其余多种语言和平台进行开

11、发,其对开发人员的友好性也可见一斑。对于整个市场而言,人们越来越频繁地使用移动设备,而大多数使用移动设备的情况,都是在玩游戏,对于一个如此庞大的市场,研究和掌握一款移动设备上的游戏引擎,并且进行游戏开发,符合市场需求。对于一个游戏开发者,游戏引擎是必须接触的一块内容,有了一个好的游戏引擎,游戏开发者可以直接调用引擎的接口,实现原本需要很复杂的代码才能实现的功能,所以有了游戏引擎,游戏开发者可以着手游戏逻辑的制作,而不用费力处理底层的效果实现,提高了开发效率。对于我个人而言,使用一款游戏引擎,研究,开发,并完成一款属于自己的游戏有很大的研究学习价值,对于我个人也能较大提升自我价值,并且学习Coc

12、os,不仅是研究该款引擎而已,同时能结束了解了Cocos引擎的结构,对今后的系统设计,模块设计,接口设计,甚至对C+语言本身的了解都能进一步加深。中国矿业大学 2015 届本科生毕业设计(论文) 第 2 页1.2 国内外发展现状首先,以一句官方的介绍开头:Cocos2d-x是MIT许可证下发布的开源游戏引擎,游戏开发快速、简易、功能强大。Cocos2d-x核心优势在于允许开发人员利用C+、Lua及Javascript来进行跨平台部署,覆盖平台包括iOS 、Android、Windows Phone、黑莓(BlackBerry )及Tizen等等,省事省力省成本。据不完全统计,cocos2d-x

13、引擎在国内手机游戏开发使用的份额接近70%,而国外使用份额则是接近25%,在苹果APP 排行榜top10里面,有7个都是用cocos2d-x引擎开发的。Cocos2d-x用户不仅包括个人开发者和游戏开发爱好者,还包括许多知名大公司如Zynga、 Wooga、Gamevil 、Glu、GREE 、Konami、 TinyCo、HandyGames、IGG及Disney Mobile等。截止2013年9月,全球基于Cocos2d-x引擎的游戏下载量高达逾15亿,其中许多还占据苹果应用商店(AppStore)和谷歌应用商店(Google Play)排行榜。同时许多公司如触控、谷歌、微软、ARM、英特

14、尔及黑莓的工程师在Cocos2d-x领域也非常活跃。目前,Cocos拥有包括Cocos2d,Cocos,Cococs2d-JS ,Cocos Code IDE,Quick-Cocos2dx在内的多种产品,其中包含各式各样的编辑器,满足可视化编辑UI和控件的功能,而就引擎而言,Cocos2d又派生出了许多不同的分支引擎,不同分支的引擎支持不同的目标平台并使用不同的编程语言。主要分支可以参考下表:分支引擎 编程语言 平台Cocos2d Python 桌面操作系统Cocos2d-iphone Objective-C, JavaScript iOSCocos2d-x C+, Lua, JavaScri

15、pt 参见支持平台和编程语言部分Cocos2d-html5 JavaScript 支持HTML5的浏览器ShinyCocos Ruby iOSCocos2d-windows C+ Windows XP/7Cocos2d-android Java AndroidCocos2d-android-1 Java AndroidCocos2d-xna C# Microsoft and MonoGame platformsCocos2d-javascript JavaScript 支持HTML5的浏览器Cocos-net C# Mono-supported 平台Cocos3d Objective-C iO

16、S中国矿业大学 2015 届本科生毕业设计(论文) 第 3 页1.3课题主要的内容和功能介绍1.3.1 课题主要的内容课题的主要内容是使用Cocos2dx引擎实现大富翁类型的游戏,实现游戏的开始菜单、关卡选择、场景搭建、声音设置、用户信息存储与读取。1.3.2 大富翁游戏功能介绍用户在安装大富翁apk 后,即可开始大富翁游戏。游戏支持与电脑AI 进行对战。游戏主要功能包括:(1)开始菜单可开始游戏,读取记录,背景音乐的开关,退出游戏。(2)玩家选择开始游戏后进入关卡选择界面,可选择3中关卡进行游戏。(3)玩家点击GO按钮后可以随机行走1-6步,行走完毕依据当前地图可选择执行购买空地图,升级当前

17、房屋和缴纳税金功能,当一方的金钱小于等于0则判断胜负,并结束游戏。(4)游戏中出现的地图可以在资源里通过地图编辑器进行编辑。(5)轮到玩家行走的时候点击保存按钮可以保存当前游戏状态,下次游戏可以通过主菜单进行读取。1.4 相关技术简介1.4.1 Cocos2dx 简述及意义cocos2d 是一个基于 MIT 协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。可以让你在创建自己的多平台游戏时节省很多的时间。Cocos2d 最初的版本是用 python 写的,之后被改成 objectiveC,应用于 iphone 上,之后国内某人又根据该设计理念,将其改为 C+版本 cocos2dX,

18、该版本可以在 iphone,widnows,andriod三个平台上运行.最新的版本是 1.0.0,该引擎 C+的版本还引入了 lua 脚本系统.cocos2d 是完全开源的引擎,开发者可以任意使用该代码而不用公开源代码.cocos2d 被广泛的使用,其中包括 Zynga,南宫梦等知名游戏公司.Cocos2d 不仅仅只是一个 2D 图形引擎库,他还提供了一些对游戏逻辑支持的系统.cocos2d 提供了一个简单的声音引擎 ,支持播放 mp3,wave,ogg 等文件格式的音乐.cocos2d 可以和物理引擎 box2d 配合使用 ,实现碰撞等物理效果.cocos2d 引擎的结构清晰,文档和实例比

19、较丰富.易学易用.总结以下 coco2d 拥有以下优点:易于使用:游戏开发者可以把关注焦点放在游戏设置本身,而不必消耗大量时间学习晦涩难懂的 OpenGL ES,此外,Cocos2D 还提供了大量的规范。高效:Cocos2D 基于 OpenGL ES 进行图形渲染,从而让移动设备的 GPU 性能发挥到极致。中国矿业大学 2015 届本科生毕业设计(论文) 第 4 页灵活:方便扩展,易于集成第三方库。免费:基于 MIT 协议的免费开源框架,用户可以放心使用,不用担心商业授权的问题。社区支持:关心 Cocos2D 的开发者自发建立了多个社区组织,可以方便的查阅各类技术资料。中国矿业大学 2015

20、届本科生毕业设计(论文) 第 5 页2.1 cocos2d 基本结构在 Cocos2d-x-3.x 引擎中,采用节点树形结构来管理游戏对象,一个游戏可以划分为不同的场景,一个场景又可以分为不同的层,一个层又可以拥有任意个可见的游戏节点(即对象,游戏中基本上所有的类都派生于节点类 Node)。可以执行 Action 来修改游戏节点的属性,使其移动、旋转、放大、缩小等等。每一个时刻都有一个场景在独立运行,通过切换不同的场景来完成一个游戏流程,游戏流程的管理由 Director 来执行.(1)导演(Director)一款游戏好比一部电影,只是游戏具有更强的交互性,不过它们的基本原理是一致的。所以在

21、Cocos2dx 中把统筹游戏大局的类抽象为导演(Director),Director 是整个 cocos2dx 引擎的核心,是整个游戏的导航仪,游戏中的一些常用操作就是由 Director 来控制的,比如OpenGL ES 的初始化,场景的转换,游戏暂停继续的控制,世界坐标和 GL 坐标之间的切换,对节点(游戏元素)的控制等,还有一些游戏数据的保存调用,屏幕尺寸的获取等都要由Director 类来管理控制的。因为 Director 是游戏项目的总导演,会经常调用进行一些控制,所以该 Director 利用了单件设计模式,也就是项目里取到的 director 都是同一个。用 getInstan

22、ce() 方法取得 Director 的实例。(2)场景(Scene)Scene 场景也是 cocos2dx 中必不可少的元素,游戏中通常我们需要构建不同的场景(至少一个),游戏里关卡、版块的切换也就是一个一个场景的切换,就像在电影中变换舞台和场地一样。场景的一个重要的作用就是流程控制的作用,我们可以通过 Director 的一系列方法控制游戏中不同的场景的自由切换。下面是 Director 控制场景的常用方法:runWithScene( Scene *scene ) 启动游戏,并运行 scene 场景。本方法在主程序第一次启动主场景的时候调用。如果已有正在运行的场景则不能调用该方法;会调用

23、pushScenestartAnimation。pushScene( Scene *scene ) 将当前运行中的场景暂停并压入到代码执行场景栈中,再将传入的 scene 设置为当前运行场景,只有存在正在运行的场景时才调用该方法;replaceScene( Scene *scene ) 直接使用传入的 scene 替换当前场景来切换画面,当前场景被释放。这是切换场景时最常用的方法。popScene() 释放当前场景,再从代码执行场景中弹出栈顶的场景,并将其设置为当前运行场景。如果栈为空,直接结束应用。和 PushScene 结对使用end() 释放和终止执行场景,同时退出应用pause() 暂

24、停当前运行场景中的所有计时器和动作,场景仍然会显示在屏幕上resume () 恢复当前运行场景的所有计时器和动作,场景仍然会显示在屏幕上同时场景是层的容器,包含了所有需要显示的游戏元素。通常,当我们需要完成一个场景时候,会创建一个Scene 的子类,并在子类中实现我们需要的功能。比如,我们可以在子类的初始化中载入游戏资源,为场景添加层,启动音乐播放等等。中国矿业大学 2015 届本科生毕业设计(论文) 第 6 页(3)层(Layer)Layer是处理玩家事件响应的Node 子类。与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸,加速度计和键盘输入等。我们需

25、要在层中加入精灵,文本标签或者其他游戏元素,并设置游戏元素的属性,比如位置,方向和大小;设置游戏元素的动作等。通常,层中的对象功能类似,耦合较紧,与层中游戏内容相关的逻辑代码也编写在层中,在组织好层后,只需要把层按照顺序添加到场景中就可以显示出来了。要向场景添加层,我们可以使用addChild方法。addChild( Node child ) addChild( Node child, int zOrder ) addChild( Node *child, int zOrder, int tag )其中,Child参数就是节点。对于场景而言,通常我们添加的节点就是层。先添加的层会被置于后添加的

26、层之下。如果需要为它们指定先后次序,可以使用不同的zOrder值。tag是元素的标识号码,如果为子节点设置了tag值,就可以在它的父节点中利用tag值就可以找到它了。层可以包含任何Node作为子节点,包括Sprites( 精灵), Labels(标签),甚至其他的Layer对象。(4)精灵Cocos2d中的精灵和其他游戏引擎中的精灵相似,它可以移动,旋转,缩放,执行动画,并接受其他转换。Cocos2dx的Sprite由Texure,frame和animation 组成,由openes 负责渲染。主要的类关系如下: 简单过程可描述为:使用 Texture2D加载图片,可以用Texture2D生成

27、对应的SpriteFrame(精灵帧),将SpriteFrame 添加到Animation 生成动画数据,用Animation生成 Animate(就是最终的动画动作),最后用Sprite执行这个动作。1.5 开发工具该项目需要多种软件和工具的支持,接下来介绍运用的主要工具以及该工具的作用。(1)Python2.7 :Cocos2d最初的版本是用python写的,现在创建新项目也需要通过Python来创建。(2)tmx地图编辑器(tIDE Tile Map Editor):瓦片地图 (Tile Map) 不但生成简单,并且可以灵活的用于Cocos2d-x引擎。不论你的游戏是角色扮演游戏, 平台

28、动作游戏或仿打砖块游戏,这些游戏地图可以使用开源的瓦片地图编辑器Tiled Map Editor生成并保存为TMX 文件格式,被Cocos2d-x支持,可编辑瓦块,斜视地图和六边形地图。(3)红孩儿工具箱:他用用于将多幅图片合成plist文件,同时也能将plist文件拆解成多张小图。(4)Cocos2d-x-ParticleEditor:一个开源的例子编辑器,打开bin目录下的ParticleEditor.exe 开启工具,里面包含了粒子实例,我们可以从中选取部分粒子效果为我所用,也可以自己编辑效果,并且可以边修改右边的数据边浏览效果。(5)Eclipse:Eclipse 是一个开放源代码的、

29、基于Java的可扩展开发平台,在这个项目里,主要是用它移植项目到apk。(6)Visual Studio 2013:微软公司推出的开发环境, Visual Studio 可以用来创建 中国矿业大学 2015 届本科生毕业设计(论文) 第 7 页Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件,在这个项目,我们用来完成整个项目的逻辑代码。1.6 本文章节安排本文共分为五章,基本内容安排如下:第1章绪论,阐述了课题的目的及意义,介绍了相关技术目前国内外的发展现状,概述了课题的主要内容及功能,之后又详略有序的介绍的相关技

30、术和多款 的开发工具。第2章系统分析,主要是对该系统进行了需求分析和用例分析,对系统的总体结构进行了分析,对系统的功能模块进行了划分。第3章系统概要设计,主要是对该系统的程序模块进行分析、地图读取及修改、游戏中的声音控制分析,之后给出了程序流程图,最后分析了实现该游戏的各个模块需要解决的问题,并提出了解决方案。第4章系统详细设计,首先对该系统的服务端进行了设计分析,之后又对地图功能模块、坦克模块、炮弹模块、绘制画面等各个部分的具体实现进行了说明,然后给出了实现这些模块的部分关键代码。最后一部分是总结与展望,总结了系统的优点与不足,并提出可进行扩展的功能设计,给出了下一步的研究方向。中国矿业大学

31、 2015 届本科生毕业设计(论文) 第 8 页2 系统分析2.1 系统设计分析良好的用户体验对于每一种游戏来说都是非常重要的。所以良好的用户体验需要做到以下几点:(1)界面友好:游戏使用界面要做到一目了然,直观简洁,并且易于操作。(2)使用流畅:要能够快速响应并处理相关信息。(3)可扩展性:在满足了游戏设计时的基本功能要求之后,还要能够进一步扩展其附加或其他的功能。(4)节省资源:无论任何时候,资源都必须尽可能的做到有效并高速利用,能够使得更加节省系统的资源,特别是对于游戏应用来说,要做到快速、准确的响应用户操作,就必须合理利用并配置有效资源,使资源利用最大化。2.2 系统需求分析2.2.1

32、 系统角色游戏玩家:可由玩家操作的角色。对手:由AI操作的角色。2.2.2 需求分析游戏类设计要能够提供友好的、便于用户操作的界面,同时能够接受用户的各项操作请求,并将这些请求转化为与之相对应的各项命令。其功能需求主要包括以下几个方面:(1)开始菜单用户能够通过菜单进行开始游戏,读取游戏,音乐设置,退出游戏的设定。(2)背景音乐在用户进行游戏的过程中,可以根据某个或某几个特定的操作播放出已设定好的相关的声音效果,同时可以播放一些背景音乐,避免了游戏过程中的单调乏味,可以使用户得到放松,丰富了游戏的功能,增加了游戏的可玩性。(3)地图选择功能用户能够自己选择想玩的地图。(4)游戏主要玩法玩家控制

33、的角色,点击GO按钮后能进行随机1-6步的行走,在停下时能弹一个对话框,提示是否购买空地,如果该空地已经有自己的房子并且能升级,则弹出是否升级的对话框,如果自己房子等级已满,则可多行走一次,如果是对方的房子,则需缴纳费用。中国矿业大学 2015 届本科生毕业设计(论文) 第 9 页3 系统概要设计3.1 系统总体功能设计3.1.1 程序功能模块分析本游戏功能模块主要分为:(1)菜单模块:主要游戏的主要设定。(2)对话框模块,游戏中多次使用该模块,而且也是由独立的代码管理,所以单独出来,作为一个独立模块进行讲解。(3)地图选择模块:主要负责用户的相关操作,游戏界面的绘制、相关地图的修改、实现相关

34、数据的发送以及接受等功能。(4)地图模块:主要的游戏场景,玩家操作人物进行游戏,以及保存游戏都在此模块。(5)数据存储模块:使用 json 文件格式(cocos API )对游戏数据进行存储,读取时根据数据读取,重新布置场景。3.1.2 地图读取以及修改游戏要能够比较容易地自主设计并可以自由的修改游戏界面上已经形成的游戏地图,同时还可以根据修改后的地图灵活的改变整个游戏的关卡多少和游戏的难易程度等。3.1.3 游戏进行中的声音的控制分析必须根据游戏中不同的操作设计播放相关的声音片段。游戏能够流畅、自如的播放出指定声音片段。3.2 程序流程根据本游戏功能场景划分,游戏程序主要分为三个各自独立的场

35、景。(1)开始菜单开始菜单为游戏打开时首先需要操作的部分,对于这部分的设计,采用传统单机游戏的设计:开始游戏,读取记录,背景音乐开关,退出游戏的模式,同时在可操作按键之外,还添加了一个 LOGO 和一个移动的彩虹精灵增加趣味。该场景如图 3.2 所示。中国矿业大学 2015 届本科生毕业设计(论文) 第 10 页中国矿业大学 2015 届本科生毕业设计(论文) 第 11 页图 3.21 开始菜单设计流程图选择按钮单机游戏选择地图开始游戏读取进度选择存档读取游戏音效设置开/关退出游戏确定?返回菜单退出是 否开始菜单场景大富翁 LOGO 飘动的彩虹中国矿业大学 2015 届本科生毕业设计(论文)

36、第 12 页(2)对话框模块:图 3.22 对话框设计流程图对话框创建对话框 设置宽高 添加标题 添加内容 添加按钮 设置回调函数正常状态按钮 按下状态按钮 设置 tag添加标签根据添加的按钮个数等分排列按钮中国矿业大学 2015 届本科生毕业设计(论文) 第 13 页(3)地图选择场景,该场景由一个可滑动的层和一个背景层组成,滑动层里又由 3 个精灵层组成,当滑动到一个位置并点击的时候,可以选择该地图进行游戏。主要使用到的 cocos2dx 的 API 有如下 4 个。1:精灵容器:添加 3 个图片精灵到精灵容器里,并设置其坐标(精灵容器长 3 个屏幕,高一个屏幕)2:scrollview

37、对象将精灵容器添加到 ScrollView 对象中,并设置其属性,如是否可触摸,滑动方向,是否可弹性滑动,坐标,大小等。3:自定义 adjust_scroll_view 方法,用来进行拖动后位置调整若滑动距离超过设定值,则切换到下一张图,根据当前是第几张图片,来调整scrollview 的位置,从而实现位置的矫正。4:Scene 场景转换:TransitionFadeDown 向下百叶窗式换场景地图选择场景如图 3.3 所示。图 3.3 地图选择场景流程图玩家选择单机游戏进入地图选择界面向左滑动 向右滑动左边没有地图了 右边还有地图 右边没有地图了 左边还有地图不能向左滑动 不能向右滑动弹回当

38、前地图并进入游戏进入右侧地图 弹回当前地图并进入游戏进入左侧地图滑动距离不足滑动距离足够滑动距离不足滑动距离足够中国矿业大学 2015 届本科生毕业设计(论文) 第 14 页(4)地图场景。地图场景是游戏与玩家交互的最主要的部分。采取的设计方法是设计一个地图基类,该基类拥有场景所具备的所有功能,然后游戏场景继承自该基类,通过读取 TMX 文件以及对数据的设定来决定每个地图的各个特点。设计流程图如图 3.4:图 3.4 场景模块游戏场景 2游戏场景 1 游戏场景 3继承自地图基类玩家信息部分地图部分Tilemap 地图编辑器 背景显示 玩家金钱绘制表格背景图片 玩家头像设置人物及逻辑行走区域背景

39、部分 建造区域中国矿业大学 2015 届本科生毕业设计(论文) 第 15 页(2)数据存储模块。该模块把两个角色的各种信息,以及建造区域的瓦块信息存入 json 文件中,每个地图都有各自的文件名,之后根据文件名进行区分读取。具体格式如下表名词解释map_level 地图种类gameRoundCount 回合数playerTag 角色 tag,用来区分角色playerPosition_x X 坐标playerPosition_y Y 坐标money 金钱comeFromeRow 上一格行编号comeFromCol 上一格列编号1isMyTurn 该回合是否行走过playerTagplayerPo

40、sition_xplayerPosition_ymoneycomeFromeRowcomeFromColplayers2isMyTurnx X 坐标y Y 坐标1gidxy2gidxy3gidlandlayer.中国矿业大学 2015 届本科生毕业设计(论文) 第 16 页4 系统详细设计4.1 菜单模块设计4.1.1:背景背景添加了两个精灵,一个是中间位置的大富翁 LOGO,另一个是左上角左右移动的精灵。背景其他部分填充为白色。在该项目中,我用 Photoshop 编辑了 3 张移动的精灵,每次打开该场景,都会随机一张图片作为飘动模块,丰富细节。bool start_menu:init().

41、/添加背景的若干个精灵add_background_sprite();.return true;相关 API 介绍:1:Sprite:create(const std:string中国矿业大学 2015 届本科生毕业设计(论文) 第 17 页return true;按钮由两部分组成,一是按键图片,二是图片上的文字。其需要设置的有按钮的坐标,按钮的大小,按钮对应的 tag,按钮按下后按下效果,按钮何时调用回调函数,以及按钮按下所需要调用的回调函数。在该项目中,每按下一个按钮,都会调用start_menu:menu_touch_down 函数,然后由该函数根据按钮 TAG 进行区分,进行相应的操作

42、。具体回调实现如下:addTargetWithActionForControlEvents(this, cccontrol_selector(start_menu:menu_touch_down), Control:EventType:TOUCH_DOWN);对应操作函数里的实现过程如下:switch (tag)case start_game_tag:/*开始游戏按钮*/此时会弹出地图选择场景,操作为 pushScene,还可以添加对应的 popScene 操作把场景退出,返回开始菜单场景Director:getInstance()-pushScene(map_choose_scene:cre

43、ate_scene();break;case lode_game_tag:/*读取游戏按钮*/弹出读取游戏的对话框,一共有 3 个可以读取的位置,对应 3 个不同的地图,如果该地图没有记录,则会显示一个空的记录popup_load_game_layer();break;case music_tag:/*音乐设置按钮*/获得音乐的状态bool music_on = UserDefault:getInstance()-getBoolForKey(MUSIC_ON_KEY, true);if (music_on)中国矿业大学 2015 届本科生毕业设计(论文) 第 18 页/*当前是音乐开启的状态,

44、此时需要把文字设置为音乐关闭,并且 TAG 也要设为 false,关闭所有背景音乐 */设置 tag 为 falseUserDefault:getInstance()-setBoolForKey(MUSIC_ON_KEY, false);/按钮被选中后文字响应的状态,即把文字改为 music offbutton-setTitleForState(MUSIC_OFF, Control:State:NORMAL);/关闭背景音乐CocosDenshion:SimpleAudioEngine:getInstance()-stopBackgroundMusic();else/*当前是音乐关闭的状态,此

45、时需要把文字设置为音乐开启,并且 TAG 也要设为 true,然后随机播放一首音乐*/设置 tag 为 true,即把文字改为 music onUserDefault:getInstance()-setBoolForKey(MUSIC_ON_KEY, true);/按钮被选中后文字响应的状态button-setTitleForState(MUSIC_ON, Control:State:NORMAL);/随机播放一首背景音乐rand_play_bg();break;case quit_game_tag:/*退出游戏按钮*/弹出关闭游戏的对话框,之后再由用户选择对应的操作quit_layer();

46、break;default:break;中国矿业大学 2015 届本科生毕业设计(论文) 第 19 页4.1.2:效果演示:4.2 场景选择模块4.2.1 添加背景添加一个背景,在滑块滑动的时候,能一直显示该背景,在该项目中,我用 Photoshop 编辑了 3 张背景图,每次打开该场景,都会随机一张地图作为背景展示,丰富细节。bool map_choose_scene:init().add_background_sprite();.return true;中国矿业大学 2015 届本科生毕业设计(论文) 第 20 页4.2.2 添加一个可左右滑动的层首先,需要一个层供玩家滑动,这个层的大小,

47、长是屏幕宽的 3 倍,高为屏幕的 1 倍,这个层有 3 个精灵,每个精灵都是一副缩小版的地图,占据一个屏幕,所以,具体的流程如下:1、创建一个 Layer2、创建 3 个 Sprite3、将这 3 个 Sprite 加入到 Layer 中,并设置对应位置4、设置该 Layer 的坐标和大小,大小为 3 个屏幕宽,一个屏幕高5、创建一个 scrollView,然后把 Layer 添加到该 scrollView6、设置 scrollView 的弹性滑动,丰富细节7、把该 scrollView 加入到场景另外,该层需要添加触摸监听,这样,当玩家手指移到屏幕上滑动的时候,他才会有对应的回应,关键代码如

48、下:bool map_choose_scene:init() ./设置为单点响应,即一次只能由一个手指操作,多个手指同时触摸之后相应第一个手指的动作setTouchMode(Touch:DispatchMode:ONE_BY_ONE);/添加触摸监听auto listener = EventListenerTouchOneByOne:create();/不向下触摸,简单点来说,比如有两个 sprite ,A 和 B,A 在上 B 在下(位置重叠),触摸 A 的时候,B 不会受到影响listener-setSwallowTouches(true);/添加了三个回调函数,分别当触摸按下时,滑动时,滑动结束时的回应回调,这边只有结束时才需要做操作,其他两个函数都是没有任何操作的listener-onTouchBegan = CC_CALLBACK_2(map_choose_scene:on_touch_began, this);listener-onTouchMoved = CC_CALLBACK_2(map_choose_scene:on_touch_moved, this);listener-onTouchEnded = CC_CALLBACK_2(map_choose_scene

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报