基于Cocos2D-X框架闯关游戏的设计_第1页
基于Cocos2D-X框架闯关游戏的设计_第2页
基于Cocos2D-X框架闯关游戏的设计_第3页
基于Cocos2D-X框架闯关游戏的设计_第4页
基于Cocos2D-X框架闯关游戏的设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、中国地质大学(武汉)远程与继续教育学院毕业设计(论文)3摘 要随着智能设备平台的普及、用户数量的增多,智能平台的应用,尤其是游戏异常火爆,从植物大战僵尸到愤怒的小鸟,移动平台游戏的开发进入了新的阶段。但是另一方面,平台的多样性也给开发者带来诸多不便,怎样将一款游戏发布到多个平台也是开发者们一直在探索的问题。特别是随着Android和iOS平台的兴起,开发者的游戏跨平台的需求更强了,随机Cocos2D-X分支诞生。其中“x”包含了两个意思:一方面是C+的文件扩展CXX,“x”表示该项目是由C+编写的;另一方面意味着交叉,这个开源项目的目的是让用户创建跨平台的代码。Cocos2d-x使用C+重写的

2、Cocos2D-x框架,因为Android和iOS均支持C+。因为Cocos2d-x具有跨平台的特点,再加上Cocos2d全球社区的支持,Cocos2d框架简单易学、十分容易快速上手,因为Cocos2d-x迅速成为开发者的首选。经过一段时间的发展,众多开发者使用Cocos2d-x开发出了多款游戏,包括捕鱼达人、地铁总动员等。关键字:智能设备、Cocos2D-X、游戏、Android; 目 录一、绪论1(一)开发背景1(二)国内外研究现状1(三)游戏开发目的及意义2(四)本课题所研究的内容3二、开发技术和相关理论介绍4(一)Cocos2D-X游戏引擎概述4(二)C+的特点5三、系统概要设计7(一

3、)设计思路与原理7(二)系统开发与选用7四、游戏详细设计与实现9(一)游戏主要设计9(二)游戏成果图12五、研究目标与主要特色14(一)研究目标14(二)主要特色14结论16致谢17参考文献18 19一、绪论手机游戏,在过去一段较长的时间里,基本都是基于J2ME(Java 2 Micro Edition),但是由于Java是一种编译成字节码后在解释执行的语言,所以在效率上远远比不上c/c+,而游戏却十分讲究效率,因为一旦效率低下,会直接影响玩家对游戏的体验,即便游戏做得再好再漂亮,没有一个良好的体验,也不能为玩家所接受。随着科技的发展,特别是近几年智能手机系统的兴起,J2ME逐渐退出舞台。取而

4、代之的是针对各自主流游戏手机系统的语言的兴起,例如IOS的Object-C,Android和Java和Windows Phone的C#,即使后者也是运行在虚拟机上的,但是厂商已经针对自身平台对它们做了特殊优化,所以效率上也远远超过J2ME,但是手机系统平台多的今天,如果每一个游戏都用多种语言复习,这种时间和资源的代价是很高的。于是,c/c+的高效率和跨平台能力有一次等到体现。(一)开发背景Cocos2D-X游戏引擎是一个支持多平台的2D手机游戏引擎,使用C+开发,基于Opengl ES,基于Cocos2D-iPhone,支持WoPhone,IOS4.1,Android2.1及更高版本,Wind

5、ows XP&Windows 7,Windows Phone 8。Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C+ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架。手机游戏,可以写在C+或者Lua中,使用API是Cocos2d-iPhone完全兼容。Cocos2d-x项目可以很容易地建立和运行在iOS,Android,黑莓Blackberry等操作系统中。Cocos2d-x还支持Windows、Mac和Linux等桌面操作系统,因此,开发者编写的源代码很容易在桌面操

6、作系统中编辑和调试。(二)国内外研究现状我们的国内现状还是没有比国外有过大的差距的。我曾经玩过数字巧克力的一款盖楼的游戏,扎眼一看只是一个搭积木的游戏,但却能让你一连玩几个小时游戏,变化无穷,游戏的设计者花了多少心思在其中可见一斑。而国内我也遇到过类似的例子。如上海幽幽推出的一款名为八卦西游勇闯盘丝洞的游戏,其实这就是一款简单的走迷宫游戏,但是与西游题材相结合后加上搞笑的对白与画面效果是整体游戏便有了一个升华。同样是让人沉迷其中。但是我还是想说一句,很多这样的游戏并没有变成产品,变成产品的那些一半以上没有上线,上线的那些一半因为制作中的某些环节,也已经面目全非,最初的那点创意根本没有体现出来。

7、所以我觉得我们国内根本不缺好的创意,只是种种的原因导致这些创意没有很好的体现出来。所以那“种种原因”才是我们需要关心的。在智能手机上的游戏,无论是技术还是创意,国内可以说是完全跟着国外走。首先,在技术上,Cocos2D-X虽然是国人在维护,但追溯到Cocos2D-X起源,2008年出生与阿根廷的Ricardo Quaesada用Python开发出Cocos2D,2010年Cocos2D的团队吧Cocos2D移植到IOS平台,命名为Cocos2D-iPhone,2011年,由国人领导的团队吧Cocos2D-iPhone用c+翻译,Cocos2D-X诞生,往后的一两年里,Cocos2D的其他分支陆

8、续诞生,而Cocos2D-X因为强大的移植性得到广泛使用,现在无论在App Store还是Android的各个商城上,用Cocos2D-X开发的游戏也数不胜数。其次,在游戏创意上,物理游戏大多是偏向于益智类,如有名的愤怒的小鸟和扑鱼达人等等,物理游戏最大的特点是游戏世界与现实世界相近,能使玩家更容易思考和了解生活中的物理现象,具有很好的教育性和趣味性。(三)游戏开发目的及意义在市场定位的过程中,游戏产品属于文化范畴,对于游戏玩家来说,其实所以会选择自己喜欢的游戏,就是因为想要在娱乐上得到一个满足。而相应的对于游戏开发商来说,我们就应该迎合这样的一个需求,满足市场上的消费者的需求,就是要在开发游

9、戏的过程中,找到游戏玩家真正需要的,找准明确的市场定位,将游戏的开发和后期的服务升级等,都以消费者为最终的出发点。物理游戏有很多其他游戏不可比拟的优势。首先,它设定的世界和现实世界很接近,其实世界存在的很多属性,在游戏世界里都能一一重现,对幼龄玩家了解生活、了解物理很有帮助;其次,物理游戏里可以实现很多生活中难以接触,甚至是不存在的物体,这样可以使玩家的想象力和逻辑能力得到很好的锻炼。综上所述,物理游戏有着很好的教育意义。往日,一提及游戏,家长总会想到“沉迷”、“段落”这些贬义词与,而娱乐有时生活中必不可少的东西,物理游戏正正可以成为游戏正名,它是娱乐,但是它又把教育和游戏相结合,可以在游戏过

10、程中潜移默化的影响玩家,引起玩家的思考,激发起玩家学习的主观能动性。(四)本课题所研究的内容本课题主要研究基于cocos2d-x开源游戏引擎,在window7操作系统平台下,使用Microsoft Visual Studio 2010开发工具进行开发。在技术实现上,采用基于C+相结合,以实现基本的游戏逻辑流程,保证系统的高性能,提高本游戏的可维护性和可移植性。在整个游戏开发中,首先对游戏的设计和需求进行了详细的考究,查阅大量的相关资料以及翻阅老师所提供的游戏资料,并且借鉴了一些其他物理游戏的开发经验及老师的专业指导,最后提出设计方案。二、开发技术和相关理论介绍(一)Cocos2D-X游戏引擎概

11、述1、Cocos2D-X的特点其除跨平台外,相对其他的移动游戏引擎还有以下特点:(1)易用性:易于学习掌握的API,大量实例代码和文档,有C+语言功底的新手只需花一个月就能上手完成简单游戏;(2)高效性:使用OpenGL ES1.1最佳方式进行渲染;(3)灵活性:易于扩展,易于与其他开源库集成使用;(4)活跃的社区:全球化的活跃论坛;(5)成功商用:根据开源社区的保守统计,基于Cocos2d-x开发的游戏全球范围内已经突破一亿安装量。2、Cocos2D-X的功能(1)非常容易的进行不同场景之间的流程控制管理;(2)菜单维护简;(3)支持标签和html标签的文本渲染;(4)快速而方便的精灵;(5

12、)按照你的想法只会精灵变化,可组合的动作,包括移动、旋转和缩放;(6)支持包括波浪、旋转和透镜等特效;(7)支持矩形和六边形的瓦片地图(Tiled Maps);(8)支持场景切换特效;(9)支持粒子系统;(10)支持硬件加速,即基于opengl es1.1实现图形渲染系统;根据不同屏幕分辩率自动缩放适配; 关于Cocos2D-X中的“X”,“X”有两个意思,一个是表示“C+”,因为有时候,C+文件的后缀名可以用cxx代替,因此X便表示该开源项目使用C+编写,并且提供C+的API,二是表示“Cross”该开源项目的目标是跨更多平台。目前支持的平台是在iPhone,Andorid的,WoPhone

13、,Win32平台上,但可根据要求提供更多的平台。Cocos2D-x继承了Cocos2D的全部特点,包括如下内容:(1)流程控制:非常容易地管理不同场景之间的流程控制。(2)精灵:快速而方便的精灵。(3)动作:可组合精灵的动作(如移动、旋转和缩放等),使精灵动起来。(4)特效:包括波浪、旋转和透镜等特性。(5)平面地图:支持平面地图和45度角地图。(6)转换:从一个场景移动到另外一个不同的场景。(7)菜单:创建内部菜单,包括主菜单和游戏菜单。(8)文本渲染:支持文本渲染标签。(9)文档:包括编程指南、API参考、视频教学和很多简单的测试例子。4、Cocos2D-X的应用由于跨平台的特性,Coco

14、s2D-x得到了诸多开发者的喜爱。截至2012年4月月底,使用Cocos2D-x开发的游戏有200多个,同时有很多用Cocos2D-iPhone开发的游戏的移植版本。开发者也尝试着使用Cocos2D-x实现很多不同游戏中的效果。CocoaChina论坛举办的特效大赛中,很多特效都基于Cocos2D-x游戏引擎开发。从显示水波纹效果到塔防游戏例子,从切绳子特效到“愤怒小鸟”太空版效果模拟,Cocos2D-x的“江湖霸主”地位初步显现。(二)C+的特点C+的主要特点有两个方面:全面支持C语言和面向对象;C+从C语言发展而来,保持了C语言的简介、高效和在某些操作上沿用了汇编语言指令的特点。同时,对C

15、语言的类型进行了系统的改革和扩充,堵塞了C语言中的许多漏洞,C+便已提供了更好的类型检查和编译时的分析,能检查出更多的类型错误。C+改善了C语言的安全性,比C+语言更安全。由于C+保持与C语言兼容,这就是许多代码并不经修改就可以在C+编译器下通过,用C语言编写的众多库函数和实用软件可方便地移植到C+中。因此,使用C语言的程序员能很快学会C+,使用C+进行编程。另外,用C+编写的程序可读性号,代码结构更为合理。C+的最重要的特点是支持面向对象的程序设计,使用C+编程,编程效率高;由于面向对象更接近人类认识世界的方法,C+对于问题更容易描述,程序更容易理解和维护,C+的模板对库代码的重用提供了支持

16、;C+更有利于大型程序设计。C+是一种支持多种程序设计方法的语言,提供对过程化和基于对象的程序设计方法的支持。使用于不用使用开发方法的编程人员。C+是一种可以撰写跨平台应用软件的面向对象的程序设计语言,C+技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。游戏的设计思路有以下几点:(1)游戏分为几个相对独立的模板,但这些模板都进行集中式管理。(2)分层的模板化程序设计思路,整个游戏采用模板化结构设计。作为应用程序有较强的靠操作性和扩展性。(3)合理的数据流设计,在应用游戏设计中,相对独立的模板间以数据流相互连接,使各模

17、板间的耦合性较低,方便游戏运行,提高游戏健壮性。三、系统概要设计(一)设计思路与原理1、设计思路(1)游戏分为几个相对独立的模板,但这些模板都进行集中式管理。 (2)分层的模板化程序设计思路,整个游戏采用模板化结构设计。作为应用程序有较强的靠操作性和扩展性。(3)合理的数据流设计,在应用游戏设计中,相对独立的模板间以数据流相互连接,使各模板间的耦合性较低,方便游戏运行,提高游戏健壮性。1、设计原理为了是本游戏趣味性丰富,操作简单,最大限度的提高游戏的质量,从而让用户的体验到游戏的乐趣,在设计开发过程中遵循了如下原则:(1)合法性原则:游戏道具和物体不会出现非物理现象。(2)准确性原则:摆放道具

18、位置相同时,不会出现多重结果。(3)趣味性原则:完全按照策划来实现道具的功能和效果。(4)易操作原则:要求设计的游戏界面友好,操作方便,必要的地方进行提示。(5)可读性原则;为了便于其他设计,维护人员读懂代码或以后的代码修改,游戏升级维护,即尽可能地做好做好代码注释工作。(6)优化性原则:为了达到优化的目的,采用面向对象的设计模式,是程序简单明了,也方便将来的维护。(二)系统开发与选用1、操作系统的选用操作系统采用微软的桌面操作系统Windows7。Windows7是微软继windowsXP后又一划时代的系统版本,无论在性能上还是在用户体验上都有相当强大的优势。C+是一种可以撰写跨平台应用软件

19、的面向对象的程序设计语言,C+技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。2、开发工具的使用(1)Microsoft Visual Studio 2010:用于游戏整体框架搭建和代码编写。(2)Microsoft Visual C+ 6.0:用于游戏整体框架搭建和代码编写。(3)Photoshop:用于对系统上的一些图片进行美工和制作。(4)Microsoft Office Word 2007:用于对论文的编写和资料的收集保存。四、游戏详细设计与实现(一)游戏主要设计游戏界面的设计,包含了游戏的开始和游戏的退出:

20、CCLayerColor:initWithColor(ccc4(0, 255, 255, 50); /背景的颜色CCSprite *pSprite = CCSprite:create("bj.png"); /背景图片pSprite->setAnchorPoint(ccp(0,0); /设置背景的位置pSprite->setPosition(ccp(0,0); /设置背景的位置addChild(pSprite);然后添加玩家,让玩家位于左边屏幕中间,CC_BREAK_IF(! CCLayerColor:initWithColor(ccc4(255,

21、60;255, 255, 255);/从CCLayerColor继承后,必须对它用initWithColor进行初始化CCSize winSize = CCDirector:sharedDirector()->getWinSize();/逻辑尺寸而不是像素CCSprite *player = CCSprite:create("player.png", CCRectMake(0, 0, 27, 40);player->setPosition(cc

22、p(player->getContentSize().width / 2, winSize.height / 2);  this->addChild(player);  bRet = true;     while (0);注:getContentSize()返回的就是这个矩形的大小,只是是逻辑尺寸, 而不是像素的,例如:一个sprite都被看成是一个矩形,具有长和宽,单位是point。接下来添加怪物,并

23、且让怪物可以移动,我们在屏幕右边创建怪物,建立动作让它们向左移动,思路就是随机产生怪物,这个怪物并且能自动随机移动。产生的怪物刚好是在手机屏幕的右边产生,所以怪物x的坐标就是屏幕的宽度,再加上怪物身体的一半。monster->setPosition(ccp(winSize.width + monster->getContentSize().width / 2, actualY);要让怪物随机的产生,只能在Y轴上做文章,所以只需要让actualY随机就行。 CCSprite *monster = 

24、;CCSprite:create("monster.png");CCSize winSize = CCDirector:sharedDirector()->getWinSize();int minY = monster->getContentSize().height / 2;/最小的Y。int maxY = winSize.height - monster->getContentSize().height /

25、0;2;/最大的Yint rangeY = maxY - minY;/怪物产生的有效范围int actualY = (rand() % rangeY) + minY;/rand()%rangeY/的意思就是值为rangeY-1,在有效范围内加上最小值,也出不了那个范围/起始点在屏幕之外monster->setPosition(ccp(winSize.width + monster->getContentSize().width /&#

26、160;2, actualY);this->addChild(monster);/显示怪物int minDuration = 2.0;/最小时间int maxDuration = 4.0;/最大时间    int rangeDuration = maxDuration - minDuration;/时间范围int actualDuration = (rand() % rangeDu

27、ration) + minDuration;/时间范围-1再加最小时间CCMoveTo *actionMove = CCMoveTo:create(actualDuration, ccp(-monster->getContentSize().width / 2, actualY);/多少时间移动到哪里,这是一个动作,/monster的前面是一个负号表示方向相反CCCallFuncN *actionMoveDone = CCCallFuncN:create(this,&#

28、160;callfuncN_selector(HelloWorld:spriteMoveFinished);/CcallFuncN说明spriteMoveFinished这个函数的参数将是一个节点,因为节点是管显示的,当精灵从左移到右的时候,我们需要它从屏幕上消失,即删除这个节点。 monster->runAction(CCSequence:create(actionMove, actionMoveDone, NULL);/CCSequence是一个动作组合,将一个几秒钟移动结束的动作和一个想事动作组合在一起,就形成了移动结束后调用什么函数的功能。接下去就是

29、定时创建怪物,在init函数返回之前,安装定时器,每秒执行一次,代码如下:his->schedule(schedule_selector(HelloWorld:gameLogic), 1.0);不直接调用addMonster函数,而是调用gameLogic函数,因为后面的1.0参数,要传递给gameLogic函数的dt参数。接着让玩家可以射击子弹,当用户在屏幕点击时,就让玩家往点击的方向进行发送子弹,用户的屏幕点击点并不是子弹移动的最终地:接下来,就是让炮塔可以旋转射击。_player = CCSprite:create("player2.png&

30、quot;);/炮塔精灵_player->setPosition(ccp(_player->getContentSize().width / 2, winSize.height / 2);/炮塔的显示位置this->addChild(_player); /显示炮塔计算出炮塔的旋转角度:运用数学知识,tan(angle) = 对边 / 邻边,利用反正切angle = arctan(对边 / 邻边),这时计算出的是弧度,用CC_RADIANS_TO_DEGREES宏转换成角度。另外在数学中,逆时针为正,在Cocos2D-

31、x中,顺时针为正,就如下图所示: 要让层可以支持触摸,需要在init方法,添加如下代码:this->setTouchEnabled(true);/这个函数是CCLayer类开启触屏响应功能的开关。只是管子弹的飞行方向和速度。具体的说就是向触摸点发射出去,最终消失的位置。在这里是不管消不消灭敌人的。消灭怪物的事,由帧去负责。帧里把这个子弹和怪兽清除了,就不会再在屏幕上出现了。当子弹碰到怪物时,怪物被消灭,子弹消失,即碰撞检测。需要在场景中跟踪目标和子弹。需要将最后计算出的角度乘以-1。float angleRadians = atanf(float)offRe

32、alY / (float)offRealX);/ataf(对边/邻边)是弧度float angleDegrees = CC_RADIANS_TO_DEGREES(angleRadians);/弧度转为角度float cocosAngle = -1 * angleDegrees;/逆时针转为顺时针方向_player->setRotation(cocosAngle);/将炮塔的方向设置成触摸的方向旋转再射击。炮塔的旋转是瞬间完成的,这不符合现实,需要让它有个动作移动炮塔的方向。然后就需要下面这

33、个代码:cocos2d:CCSprite *_nextProjectile;/子弹,这个变量的设定只是起到一个中间作用。意思是,用它生成一颗子弹,然后将这颗子弹加入到子弹数组中。(二)游戏成果图五、研究目标与主要特色(一)研究目标游戏给人们紧张的生活带来了无限的乐趣,是人们生活的调味剂,总所周知,移动互联网是未来生活的主旋律,因此两者的结合,手机游戏将迎来广阔的市场,在此情况下研究手机游戏运营商如何获利具有非常重要的价值。通过自己所学的知识基本完成系统的功能实现,在完成系统的过程中对使用cocos2d-x的了解。(二)主要特色Cocos2D-X是一个开源的移动2D游戏框架,MIT许可

34、证下发布的。这是一个C+Cocos2D-X-iPhone项目的版本。Cocos2D-X发展的重点是围绕Cocos2D跨平台。即其实现一次编码,在各平台分别编译后即可运行,不需为跨平台修改大量代码,不需要在这一方面花费很多时间和人力。随着智能设备平台的普及、用户数量的增多,智能平台的应用,尤其是游戏异常火爆,从植物大战僵尸到愤怒的小鸟,移动平台游戏的开发进入了新的阶段。但是另一方面,平台的多样性也给开发者带来诸多不便,怎样将一款游戏发布到多个平台也是开发者们一直在探索的问题。特别是随着Android和iOS平台的兴起,开发者的游戏跨平台的需求更强了,随机Cocos2D-X分支诞生。其中“x”包含了两个意思:一方面是C+的文件扩展CXX,“x”表示该项目是由C+编写的;另一方面意味着交叉,这个开源项目的目的是让用户创建跨平台的代码。Cocos2d-x使用C+

温馨提示

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

评论

0/150

提交评论