ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:540.82KB ,
资源ID:9362689      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9362689.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于cocos2dx的跨平台游戏的设计与实现本科毕业设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于cocos2dx的跨平台游戏的设计与实现本科毕业设计.docx

1、基于cocos2dx的跨平台游戏的设计与实现本科毕业设计 毕 业 设 计题目基于Cocos2D-X的跨平台游戏的设计与实现姓 名 学 号 系(院) 班 级 指导教师 职 称 二O一四 年 五 月 二十 日毕业设计(论文)答辩评审表课题名称基于Cocos2d-X的跨平台游戏的设计与实现学生姓名 答辩小组评分指导教师签名评语:答辩小组负责人签字:年 月 日答辩小组成员签 名毕业设计(论文)成绩评定表指导教师评分(30分)评阅人评分(30分)答辩评分(40分)综合成绩答辩委员会负责人签字:年 月 日第1章 绪论1.1 手游背景手游指在手机等各类手持硬件设备上运行的游戏类应用程序,其需要具备一定硬件环

2、境和一定系统级程序作为运行基础。2004年,手机游戏均为WAP游戏,到2005年,图形化手机游戏激增,已经超过40余 款。2005年6月,盛大英特尔宣布携手共同开发国内手机游戏市场,手机网游行业阵营开始空前壮大,继盛大、北京掌讯、美通之后,网易、空中,标派等也纷 纷加入,目前国内手机游戏厂商已经近30家。手机游戏尚处于市场导入期,在未来几年内,手机游戏将步入快速发展阶段。1.2 发展趋势近年来,随着智能机的普及以及3G的覆盖率增加,手机网游日益兴起,现已经有近两千万的手机网游玩家了。2014年,国内移动互联网竞争格局未定,运营商拒绝管道化欲谋更多话语权,转型力度、资源投入日趋加大;在部分细分领

3、域,围绕运营商转型的业务和渠道价 值骤然放大,引发产业整合日趋频繁。在此背景下,国内移动互联龙头拓维信息通过多年技术积累及运营商渠道优势,确定以手机动漫与游戏业务为两大核心发展方 向之一。1.3 研究意义全球在使用的移动电话已经超过10亿部,而且这个数字每天都在不断增加。在除美国外的各个发达国家,手机用户都比计算机用户多。手机游戏潜在的市场比其他任何平台,比如PlayStation和GameBoy都要大。在控制台游戏时代,GameBoy热销的一个原因就是便携性人们可以随时随 地沉浸在自己喜欢的游戏中,还可以随时随地抢购自己喜欢的装备或宠物。和游戏控制台或者PC相比,手机虽然可能不是一个理想的游

4、戏设备,但毕竟人们总是随 时随身携带,这样手机游戏很可能成为人们消遣时间的首选。手机便携性、移动性的特征更能满足用户随时随地玩游戏的需求,用户利用排队、等车的时间进行游 戏,手机游戏碎片化的特性凸显。调查显示,29.8%的用户在用手机玩游戏以后电脑端玩游戏的时间减少,手机游戏已经开始抢夺电脑游戏时间。22.4%的 用户手机游戏时间越来越长,仅有10%的用户时间变短,手机游戏已逐渐成为一种普遍的娱乐方式。因为手机是网络设备,在一定限制因素下可以实现多人在线游戏。随着移动网络的发展,移 动游戏也越来越多的被大家接受,对于之前长期通知市场的掌机来说造成了不少的冲击。市场研究公司IDC和App Ann

5、ie报告显示2013年第一季度iOS和Android平台游戏业务营收是掌机的3倍。手机游戏市场潜力大,投入资金少,吸引了很多市场进入者,但中小SP在激烈的竞争中生存问题是需要考虑的主要问题。手机游戏开发商、游戏应及服务提供商不重视市场宣传和推广工作,忽视对于游戏产品,用户的体验和习惯培养重要性。手机游戏市场竞争激烈,该竞争涉及国内,也涉及国外游戏开发商。追求低成本和短期利益,现游戏产品的质量粗糙。手机游戏的同质化也越来越严重,创新力不足。 第2章 相关设计2.1 C+语言C+语言是一种使用非常广泛的计算机编程语言。是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设

6、计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。C+在一定程度上可以和C语言很好的结合,甚至大多数C语言程序是在C+的集成开发环境中完成的。C+相对众多的面向对象的语言,具有相当高的性能。C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT就是使用的C+。C+避免平台限定或没有普遍用途的特性。C+不使用会带来额外开销的特性。C+设计成无需复杂的程序设计环境。2.2 Cocos2D-X平台技术介绍cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。这是一个C+ Cocos2d-iPhon

7、e项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架。手机游戏,可以写在 C+或者Lua中,使用API是Cocos2d-iPhone完全兼容。Cocos2d-x项目可以很容易地建立和运行在IOS,Android,黑莓 Blackberry等操作系统中。Cocos2d-x还支持Windows、Mac和Linux等桌面操作系统,因此,开发者编写的源代码很容易在桌面操作系统中编辑和调试。Cocos2D-X主要功能:流程控制(Flow control):非常容易地管理不同场景(scenes)之间的流程控制;精灵(Sprites):快速而方便的精灵;动作(A

8、ctions):告诉精灵们该做什么。可组合的动作如移动(move)、旋转(rotate)和缩放(scale)等更多;特效(Effects):特效包括波浪(waves)、旋转(twirl)和透镜(lens)等更多;平面地图(Tiled Maps):支持包括矩形和六边形平面地图;转换(Transitions):从一个场景移动到另外一个不同风格的场景;菜单(Menus):创建内部菜单;文本渲染(Text Rendering):支持标签和HTML标签动作;文档(Documents):编程指南 + API参考 + 视频教学 + 很多教用户如何使用的简单测试例子;MIT许可:尽管用就是了;基于Pyglet

9、:没有外部的依赖;基于OpenGL:支持硬件加速;3D对象:MD2模型支持;脚本语言:支持Lua,JavaScript语言。图2.2 Cocos2D-X引擎架构2.3开发工具游戏在WindowsXP系统下开发,基于visual studioC+2008的开发平台,采用了cocos2d-x技术进行开发。操作系统:MicrosoftWindows7程序语言:C+开发工具:Microsoft VisvalStudio2012,cocos2d-x-2.2.2MicrosoftVisualC+,(简称VisualC+、MSVC、VC+或VC)微软公司的C+开发工具,具有集成开发环境,可提供编辑C语言,C

10、+以及C+等编程语言。VisualC+以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加链接著称。这些特征明显缩短程序编辑、编译及链接的时间花费,在大型软件计划上尤其显著。C+语言是目前面向对象编程的首选语言,学习、使用 C+ 语言并进行应用程序设计的人员非常多,Microsoft公司的Visual C+ 2008因其强大的功能、非常友好的界面而成为当前最为热门 C+ 语言开发环境。VisualC

11、+提供的集成开发环境、MFC类库和应用程序框架极大地便利了用 C+ 语言开发Windows应用程序所需的源代码编写、用户界面设计、消息映射、编译链接和调试运行等工作。第3章 设计概要3.1 游戏介绍这是一款飞行射击类游戏,整体环境主要还是围绕太空为主,高保真的音效,为玩家呈现一场不一样射击体验。简单的触屏操 作,触屏按住随意一个地方,左右移动,便可自动攻击敌人,上下移动亦可躲避强敌。在飞机的左下角还有两个道具槽,直接点击就可以发动道具效果,前提是你必 须要吃到道具。玩家在游戏中要做的就是驾驶着最新战机,在敌机身前发动攻击。在击毁敌机的同时获得分数,击毁的敌机越多,则相对的获得分数就越高。玩家进

12、行游戏的时候需要注意不能被敌机及敌机子弹碰到,否则玩家控制角色死亡,同时游戏结束。记录玩家获取的积分。3.2游戏的结构例图游戏的结构例图如图3.2所示:图3.2游戏的结构图例图3.3功能模块分析图游戏功能模块主体分析:3.3.1 游戏欢迎页面游戏欢迎页面主要是预加载游戏进行需要的图片、音乐等资源进行预加载。3.3.2 游戏主页面游戏主页面逻辑判断如图3.3所示。图3.3游戏主页面逻辑判断图道具使用逻辑图如下:图3.3道具使用逻辑图3.4游戏失败游戏失败逻辑图图3.4游戏失败逻辑图第4章 项目设计4.1 游戏架构设计由项目的需求分析可以清晰的对本游戏的具体功能实现进行设计,如下图4.1是本游戏的

13、总体架构设计。图4.1 游戏总体构架设计通过对游戏的需求进行分析和细致的归纳,可以认为游戏的主要内容是由游戏进行时和游戏失败两个主要部分所构成。游戏进行时包含了用户对主角的操作以及对主角信息(获得的分数及获取的道具)的管理,用户游戏结束的操作选择,游戏进行为本系统的设计核心。基于这些考虑,本游戏将对游戏进行时的事件作为一个重点的功能模块进行详细设计。第5章 项目实现前四章是对游戏的逻辑和功能上的设计,而游戏实现阶段就要依据之前的成果将抽象化设计转化为物理实现。5.1游戏总体实现游戏的模块结构是对游戏的进行一个总体划分,要真正的实现游戏,还需要进一步的设计用户的功能。游戏的功能分为十类:游戏主场

14、景、游戏欢迎页、游戏主角类、游戏敌机类、子弹类、游戏场景类、游戏结束场景类、管理类、道具类、触摸事件,针对每一个功能都实现了不同的作用。5.2各模块实现本文对货单管理模块、个人信息管理模块、系统信息管理模块中的功能具体实现过程进行论述。5.2.1功能的实现依赖项目创建的时候需要添加cocos2d-x的支持项,如图5.2.1,图5.2.1搭建好的工程在第一次创建项目的时候会自动把需要的外部依赖项添加到项目下,不需要手动额外添加。需要注意的是,在开始一个项目的时候,要把需要用到的图片资源以及音乐添加到项目目录下,否则在项目进行的过程中会报错。资源文件尽量不要用中文命名,有时会出现字符编码的错误。5

15、.2.2 游戏主欢迎页的实现用户在进去游戏的时候,会首先进入到欢迎页面(图5.2.2.1)。图5.2.2.1欢迎页是为了对资源,即图片资源和音乐资源进行预加载,图片资源和音乐资源相对较大,进入游戏后在加载比较慢,对游戏体验会造成一定影响,所以在欢迎页面进行预加载,进入游戏后可以享受较好的体验,不会因为加载资源而造成游戏卡的问题。加载资源代码如下:/加载音乐资源PreloadMusic();void WelcomeLayer:PreloadMusic()CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadBackgroundMusic(so

16、und/game_music.mp3);CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadEffect(sound/bullet.mp3);CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadEffect(sound/enemy1_down.mp3);CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadEffect(sound/enemy2_down.mp3);CocosDenshion:SimpleAudioEngine:s

17、haredEngine()-preloadEffect(sound/enemy3_down.mp3);CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadEffect(sound/game_over.mp3);CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadEffect(sound/get_bomb.mp3);CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadEffect(sound/get_double_laser.mp

18、3);CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadEffect(sound/use_bomb.mp3);CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadEffect(sound/big_spaceship_flying.mp3);CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadEffect(sound/achievement.mp3);CocosDenshion:SimpleAudioEngine:sharedE

19、ngine()-preloadEffect(sound/out_porp.mp3);CocosDenshion:SimpleAudioEngine:sharedEngine()-preloadEffect(sound/button.mp3);CocosDenshion:SimpleAudioEngine:sharedEngine()-playBackgroundMusic(sound/game_music.mp3,true);这是做一个检测,可以不添加,但是为了保证代码的健壮性要添加:bool bRet=false;doCC_BREAK_IF(!CCLayer:init();、bRet=tru

20、e; while (0);return bRet;5.2.3游戏主场景游戏主场景是为添加的精灵提供一个层,所有的精灵都是在这个层上进行添加。5.2.4游戏主角类创建游戏主角后,然他在进入游戏后闪烁三次,主角在进行飞行的时候让尾巴的烟火一长一短,显示正在飞行,这里是通过两个图片不断交替显示完成的。/创建 CCBlink 效果CCBlink *blink=CCBlink:create(1,3);/CCAnimation* animation=CCAnimation:create();/通过.png 和 .plist文件创建精灵表/animation-addSpriteFrame(CCSpriteF

21、rameCache:sharedSpriteFrameCache()-spriteFrameByName(hero1.png);/animation-addSpriteFrame(CCSpriteFrameCache:sharedSpriteFrameCache()-spriteFrameByName(hero2.png);/从本地文件系统中加载图片文件到CCSpriteFrame中区,然后添加到CCAnimation中for (int i = 1; i addSpriteFrameWithFileName(szImageFileName);CC_BREAK_IF(!animation);an

22、imation-setDelayPerUnit(0.1f);CCAnimate* animate=CCAnimate:create(animation);plane-runAction(blink);plane-runAction(CCRepeatForever:create(animate);主角在飞行的时候会发射子弹,所以要添加子弹,同时发射子弹的时候还有子弹的音效CocosDenshion:SimpleAudioEngine:sharedEngine()-playEffect(sound/bullet.mp3);CCSprite* bullet=CCSprite:createWithSp

23、riteFrameName(bullet1.png);bulletBatchNode-addChild(bullet);/this-addChild(bullet);this-m_pAllBullet-addObject(bullet);CCPoint planePosition=PlaneLayer:sharedPlane-getChildByTag(AIRPLANE)-getPosition();CCPoint bulletPosition=ccp(planePosition.x,planePosition.y+PlaneLayer:sharedPlane-getChildByTag(AI

24、RPLANE)-getContentSize().height/2);bullet-setPosition(bulletPosition);float length=CCDirector:sharedDirector()-getWinSize().height+bullet-getContentSize().height/2-bulletPosition.y;float velocity=320/1;/320pixel/secfloat realMoveDuration=length/velocity;CCFiniteTimeAction* actionMove=CCMoveTo:create

25、(realMoveDuration,ccp(bulletPosition.x,CCDirector:sharedDirector()-getWinSize().height+bullet-getContentSize().height/2);CCFiniteTimeAction* actionDone=CCCallFuncN:create(this,callfuncN_selector(BulletLayer:bulletMoveFinished);CCSequence* sequence=CCSequence:create(actionMove,actionDone,NULL);bullet

26、-runAction(sequence);由于子弹的发射是有间隔的,设置一个schedule,有规律的调用AddBullet函数,是子弹发射;void BulletLayer:StartShoot(float delay)this-schedule(schedule_selector(BulletLayer:AddBullet),0.20f,kCCRepeatForever,delay);void BulletLayer:StopShoot()this-unschedule(schedule_selector(BulletLayer:AddBullet);5.2.5敌机类游戏里要有敌人,添加敌

27、机,敌机要根据时间添加,防止出现一大群敌机同时出现/初始化bool CWXEnemyManager:Init( CCTexture2D* pTexture,float fSpeed,int nCD,int nScore,int nHp,Receiver* pReceiver )do/对敌人的属性赋值m_nScore = nScore;m_nHp = nHp;m_pReceiver = pReceiver;m_nCD = nCD;m_nCDTime = m_nCD;m_pTexture = pTexture;m_fSpeed = fSpeed;return true; while (false)

28、;CCLog(Fun EnemyManager:Init Error!);return false;/判断是否创建敌人void CWXEnemyManager:EnemyManagerLoop()if (IsCreate()Create();/更新创建敌人时间bool CWXEnemyManager:IsCreate()if (m_nCD=0)m_nCD = m_nCDTime;return true;elsem_nCD-;return false;/根据敌人属性创建敌人void CWXEnemyManager:Create()CCSize PlaneSize = m_pTexture-get

29、ContentSize();EnemyForCreateMsg Info;Info.nScore = m_nScore;Info.nHp = m_nHp;Info.pTexture = m_pTexture;Info.fSpeed = m_fSpeed;/为了不让敌机产生一半在屏幕外的情况。Info.pStartPoint = CCPointMake(rand()%(int)(_SCREEN_WIDTH_ - PlaneSize.width)+ PlaneSize.width*0.5,_SCREEN_HEIGHT_-1.f);/发消息创建敌人this-SendMsg(enMsgEnemyFor

30、Create,&Info,sizeof(Info);5.2.6 敌机管理敌机与主角子弹碰撞后,要做碰撞检测。同时发送消息消除敌机,将发生了碰撞的敌机进行回收,把碰撞的子弹和敌机存入CCArray中,移除碰撞的子弹和敌机void GameScene:detectionCrash()CCArray* bulletsToDelete = CCArray:create();/创建一个CCArray,用以存放待删除的子弹,也就是此帧中被检测到碰撞的子弹 bulletsToDelete-retain();/必须调用retain,CCArray内部调用了autoReleaseCCObject* bt,*et;CCArray* enemyToDelete = CCArray:cr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1