如何使用Cocos2d-x来制作一个塔防游戏

如何制作一个塔防游戏 Cocos2d-x 2.0.4_百度知道
如何制作一个塔防游戏 Cocos2d-x 2.0.4
我有更好的答案
出洞动画 ,鼠进洞动画,这些组合到一个MovieClip,然后复制几个(假如是10个)放到舞台上,取好名mc0~mc9写程序, (1)用打鼠的锤子 代替鼠标
(2) 控制地vnu : 设个定时器,要其它规则自己加,比如,出洞动画, 打鼠的锤子把 鼠洞;准备美术素材,不能点击.这是最简单的, 鼠洞, 出洞的mc侦听鼠标点击,被点后计分, 没被点,定时播放进洞动画,收进洞里,鼠进洞动画,一定时间内用随机数取,取0-9的中任意数,播放出洞动画;ltlt,设定有不同的地鼠,打到多少后游戏结束,或者定时结束
采纳率:95%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看: 1813|回复: 32
cocos2d-X 经典游戏《塔防游戏》完整源码下载
主题帖子积分
论坛元老, 积分 498995, 距离下一级还需 9501004 积分
论坛元老, 积分 498995, 距离下一级还需 9501004 积分
源码介绍/ M5 d# W& d% R1 R6 a9 r! Z
手机游戏源码cocos2d-x塔防游戏# o3 N+ U. O* i
我们已经学习到了好多简单的游戏机制了(比如精灵、菜单等),现在我们来试着制作一款塔防游戏。 首先我们得搞清楚塔防游戏的定义:
1. 敌人从一个方向出来,然后沿着一条预先设定好的路径行走,去往某个目的地(通常是地图的另一端)。6 u. ^7 u5 j: R6 V
2. 你可以沿着那条路径来建筑一些“塔”,当敌人经过这个塔的时候,塔就会向它开火。为了能够抵挡一波又一波更猛的怪物的进攻,你需要不断升级你的箭塔来加强火力。
3. 你可以通过挡住最后一波进攻来取得游戏的胜利(通常是20~50波),或者你也可以让他们一波接一波的通过,然后你输了。当然,你也可以向别人炫耀,你坚持到了97波啦。- w4 b- i9 S9 `' {2 w+ ]
# v+ T9 Q; J' {' N; _
大小:305 KB
引擎版本:3.2 开发工具:vs2012 % ^' V. z# }* \' {
测试说明:基于cocos2d-x3.2和vs2012测试3 B# }% i&&?0 k
添加库GUI,cocostudio,Extensions5 ^( K/ h$ K# g. F$ {
如编译失败,右击属性-&配置属性-&C/C++-&常规-&附件包含目录,新增行:$(EngineRoot)cocos\editor-support! B6 Y2 }0 A& a. X
编译,还不是行,右键XXX工程-&属性-&链接器-&输入-&附加依赖项,将以下三个lib附加进来5 k2 X- y% d4 ]" c9 ]
libCocosStudio.lib
libExtensions.lib3 @5 N6 _* I7 l+ |% j* y
libGUI.lib& &: `4 b& D1 c. c$ W
11.png (107.87 KB, 下载次数: 5)
cocos2d-X 经典游戏《塔防游戏》完整源码
18:48 上传
$ O% u( R6 @# J' m$ K0 ?9 p# ^
22.png (140.27 KB, 下载次数: 12)
cocos2d-X 经典游戏《塔防游戏》完整源码
18:48 上传
游客,如果您要查看本帖隐藏内容请
游戏咖啡屋-最好的游戏编程源码技术网站!1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关 交流QQ群:
2、本站所有主题由该帖子作者发表,该帖子作者与享有帖子相关版权
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
哈...今天心情不错,来游戏咖啡区签到了...
主题帖子积分
金牌会员, 积分 1990, 距离下一级还需 1010 积分
金牌会员, 积分 1990, 距离下一级还需 1010 积分
感谢楼主,楼主威武!!!!!!!!!!!!!!!!!!!!!!!!
主题帖子积分
新手上路, 积分 20, 距离下一级还需 30 积分
新手上路, 积分 20, 距离下一级还需 30 积分
看看再说看看再说看看再说看看再说看看再说看看再说看看再说看看再说看看再说看看再说看看再说看看再说
主题帖子积分
新手上路, 积分 3, 距离下一级还需 47 积分
新手上路, 积分 3, 距离下一级还需 47 积分
VGDSAR GGFDRHGWAGRDGTWG NFDZSGNHWETGT2 跟我 高筒袜去
主题帖子积分
中级会员, 积分 215, 距离下一级还需 285 积分
中级会员, 积分 215, 距离下一级还需 285 积分
: cocos2d-X 经典游戏《塔防游戏》完整源码下载 [修改]
主题帖子积分
注册会员, 积分 114, 距离下一级还需 86 积分
注册会员, 积分 114, 距离下一级还需 86 积分
c,vn,cn,.vnzx,vmnzxc,mnv,.zxcn,m.vnxczvzxcvxczvcxzxvz
主题帖子积分
论坛元老, 积分 9587, 距离下一级还需 9990412 积分
论坛元老, 积分 9587, 距离下一级还需 9990412 积分
看看需要多少积分,测试一下
主题帖子积分
论坛元老, 积分 9518, 距离下一级还需 9990481 积分
论坛元老, 积分 9518, 距离下一级还需 9990481 积分
学习&&学习&&学习&&学习&&学习&&学习
主题帖子积分
金牌会员, 积分 1067, 距离下一级还需 1933 积分
金牌会员, 积分 1067, 距离下一级还需 1933 积分
第三方士大夫时代复分
就让光芒折射泪湿的瞳孔,映出心中最拥有的彩虹,带我奔向那片有你的天空。。。因为你。。。你是我的梦
主题帖子积分
论坛元老, 积分 3216, 距离下一级还需 9996783 积分
论坛元老, 积分 3216, 距离下一级还需 9996783 积分
本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
注册账号后积极发帖的会员
积极宣传本站,为本站带来更多的用户访问量
经常在论坛发帖,且发帖量较大
曾经为论坛做出突出贡献目前已离职的版主
Powered by去年三四月份,花了将近两个月的时间,做了一个简陋的塔防游戏,三种怪物,三种塔,自己真的学到了很多很多。策划美术加程序都是自己一个人在做,所以构思变化很大,程序一直在完善,中间美术也彻底换了一套,用了那时很火的保卫萝卜的素材。最终经大神指点,决定推翻重写,按照自己现有的合理构思逻辑重新写一遍,因为在之前版本上得修改好多地方,一直不忍删除自己辛辛苦苦敲的代码。然而,没有做多少,只实现了一个怪物按照指点路线setposition进行移动,而不是之前的runaction,再加一种塔(炮弹塔)进行攻击,也顺便尝试了几种新的方法,之后,就停下了这个项目,或忙做实验室其它的项目,或没有太大的动力继续做下去。后来,面临毕设选题之际,决定借此重新整理一下这个项目,所以找了自己熟悉的老师,报上了这个题目,塔防游戏的设计。老师偏向于算法的设计,所以后续会着手研究一下算法,这也是之前没有做过的。
这就是我的塔防的游戏界面,有三个地图关卡设计。1、改变enemy的run函数,由moveto改成setposition2、便便塔攻击后,gun瞄准的位置出现错误,建议将gun的瞄准和怪物的速度建立联系(需要实现第一步)3、完善便便塔的攻击,由暂停怪物改成减速(需要实现第一步)4、便便塔攻击时缺少塔的发射动作(帧动画,还未解决)5、加入怪物攻击塔的功能6、将菜单做的更加好看7、声音没有出现重音(未解决)8、将怪物改成数据化操作
这是之前的一些需要修改的地方,其实还有一些不是很完善,比如,炮弹塔只有一个移动瞄准的动作,攻击时没有帧动画,这个研究了很多,一直没有实现,现在间隔那么久了,是时候看看自己的水平有没有提高了。
整理一下思路:1.
老版本怪物的出现都是由定时器完成,一个怪物一个定时器,包括怪物的运动也是,塔的攻击也是这样的,这样的话,场景中存在好多的定时器。明显这是不合理的,后来大神说应该在主场景中开一个定时器,遍历所有的怪物和塔,这样一个定时器就搞定了。这个方法已经实现成功了。2.
之前没有用ccspritebatchnode,所以怪物和塔越多,渲染的也就越多,场景就会卡了,但是由于我设计的是塔的攻击效果是加载在怪物身上的,也就是说,当子弹打在怪物身上时,会出现攻击的火花,如果把怪物封装进ccspritebatchnode中,那也得把攻击效果也打包进去,这样就又出现不合理的地方了,目前还未试过其它方法,期待后续解决。3.
塔只有旋转瞄准的动作,没有攻击的动作,需要完善。4.
怪物是开启定时器出现的,应该读取配置出现,这个目前也已经实现了,不过仅仅只是改变了出现的时间,还未加进其它属性。 就先按照自己的思路一步一步去实现,寒假回家希望能多学点多做点,不过家里没网,博客更新就会延缓一下,逼迫自己提前写好word文档。就爱阅读www.92to.com网友整理上传,为您提供最全的知识大全,期待您的分享,转载请注明出处。
欢迎转载:
推荐:    Quick-Cocos2d-x初学者游戏教程5 - 为程序员服务
Quick-Cocos2d-x初学者游戏教程5
我们创建了游戏的菜单场景,并讲解了一些基础元素的创建,接下来这章,我们会先让大家了解一些接下来游戏开发中需要用到的辅助工具,然后再教大家创建另一个游戏场景,并跳着到该场景中来。
在开始真真的写代码之前,其实早该讲讲以下这些辅助工具的。这些工具可以让我们更好更方便的实现程序中的某些功能,比如地图编辑工具、粒子编辑工具等。尽管这些工具在我之前的教程中已经不厌其烦的讲了好多次了,但是为了做到真正的初学者教程,本小节还是先来简单的介绍下这些工具的使用方法,毕竟接下来的章节中我们会陆续的用到这些工具。还是那句话,希望对初学者有所帮助。
TexturePacker
TexturePacker 是一款图片编辑打包工具,它能将我们游戏中用到的多个图片资源打包成一张大图,这样加载图片不仅能节省空间,而且还能提升速度。
TexturePacker 的下载可以到它的
进行下载。
Texturepacker工具的使用很简单,它的每个设置项都给出了相应的提示信息,这里我们打包的步骤如下:
将资源图片拖动到 TexturePacker 右侧窗口中。
设置导出资源的格式、位置,这里会导出两种文件,其中一个是储存图片信息属性的列表文件,该文件只能是 .plist 格式;另一个文件是打包后的图片文件,它可以是 .png,.jpg,.pvr.ccz 等等格式,但这里建议打包为pvr.ccz格式,因为使用这种图片格式的好处有两点:1、可以使你的应用程序更小,因为图片是被压缩过了的。2、你的游戏能够启动地更快。
点击 Publish 按钮导出资源。
在 Quick 中要想使用这种被打包的资源,那么我们首先需要把它载入精灵帧缓存。以下函数能实现这一目的:
&code&display.addSpriteFrames(数据文件名, 材质文件名)
材质文件名:由多张图片组成;
数据文件(plist 文件):记录了图片在材质文件中的位置等信息。
如下是用Xcode打开的 plist 文件的结构,我想这样可以让各位更加直观的感受下打包这个概念。
精灵帧缓存 SpriteFrameCache 是用来存储精灵帧 SpriteFrame 的,SpriteFrame 精灵帧对象可以用来追踪所有精灵帧缓存中精灵的信息。缓存精灵帧有助于提高程序的效率。其中 SpriteFrameCache 是一个单例模式,它不属于某个精灵,是所有精灵共享使用的。
addSpriteFrames 方法将从传人的 plist 列表文件的元数据部分获取各个纹理的纹理名,并将它载入到纹理缓存中,然后解析它属性列表里的文件。
当我们要使用精灵帧来创建一个精灵时,我们可以像前面创建普通精灵一样使用newSprite方法。但为了和直接用文件中的图片创建精灵区分开来,Quick 中规定:如果图片名以“#”字符开头,那么该图片将从SpriteFrameCache中读取,如果没有“#”开头,才表示直接从文件中读取。
关于打包文件的实际应用,我们后面会给出例子。这里你可以先把资源载入精灵帧缓存,如下在 MyApp:run() 方法中添加以下代码:
&code&display.addSpriteFrames("image/player.plist", "image/player.pvr.ccz")
TiledMap编辑器
TiledMap 编辑器是一款地图编辑工具,我们可以利用它把单个单个的图块(或称之为瓦片)拼接成一幅完整的地图,我们也称之为瓦片地图编辑器。
TiledMap 编辑器制作的地图为 TMX 格式的文件,该文件可以被 Cocos2d-x(Quick)很好的支持。其官方下载地址为:
本游戏中,我们将用TiledMap编辑器编辑本游戏的部分地图,具体的方法我们在用到时在详细讲解。
粒子编辑器
本游戏中,后面我们会用粒子效果来渲染游戏场景,使游戏更加炫丽,所以下面我要说说这个粒子编辑器是个咋回事!
因为游戏中往往需要有到一些特殊的粒子效果(如烟花、爆炸、下雪等等),所以粒子系统这样的程序模块便在各类游戏引擎中孕育而生,Cocos2d-x(Quick)也不例外,它为我们提供了强大的粒子系统。只不过Cocos2d-x(Quick)中的粒子系统有非常多的属性需要设置和调节,使用起来还是有些复杂。
所以为了能偷懒,程序员们开发了粒子编辑器,它可以很方便的编辑出漂亮的粒子效果,让你勉去手动设置粒子属性的过程。
常用的粒子编辑器也有两种,一种是ParticleDesigner,另一种是ParticleEditor(之前我也写过一篇关于如何使用
相关的文章,可供大家可以参考)。
教程中我们所用的粒子编辑器是ParticleDesigner,下面是我用该编辑器调出的一个粒子效果。
注意:如果想要调出满意的粒子效果,那么需要了解整个粒子系统的组成原理,所以想自己试试的童鞋可以参考
以上我们就粗劣的介绍完了开发中将用到的辅助工具,接下来我们来看看如何创建新的游戏场景。
新建游戏场景
在 Sublime 编辑器中新建一个 lua 文件是非常容易的,只需要在菜单栏中选择 File-》New File 就可以新建一个文档,然后再把这个文档以 .lua 的形式保存在 src ? app ? scenes 目录下就可以了。此处我们新建一个 lua 文件,取名为 GameScene。
这个 GameScene 场景将是本游戏的逻辑场景,飞行游戏的所有逻辑部分的代码都将在本场景中实现。所以下面我们就来开始构建这样的一个游戏场景吧。
首先,根据 MainScene.lua 文件的构成形式,我们依葫芦画瓢在 GameScene.lua 文件中加入如下的一段代码,该段代码将为我们创建一个空白的游戏场景。
&code&local GameScene = class("GameScene", function()
return display.newScene("GameScene")
function GameScene:ctor()
function GameScene:onEnter()
function GameScene:onExit()
return GameScene
添加好以上代码后,一个简单且背景黢黑的 GameScene 场景就算创建好了。
关于 GameScene 的代码我们暂时就这样子,在下章分析完 GameScene 的构成后我们再着手编写。下面我们先来跳转到 GameScene 场景看看跳转效果。
我们知道,游戏运行的第一个游戏场景是 MainScene 场景,所以,现在请打开 MainScene.lua 文件,让我们来添加代码使它能跳转到 GameScene 场景,添加的位置是在点击开始按钮时触发的 onButtonClicked 函数中。代码如下所示:
cc.ui.UIPushButton.new({ normal = "image/start1.png", pressed = "image/start2.png" })
:onButtonClicked(function()
app:enterScene("GameScene", nil, "SLIDEINT", 1.0)
enterScene 方法我们曾在讲解 MyApp.lua 文件时提到过,当时只是使用该方法简单的进入场景而已,而此处我们则添加了特别的切换效果。并没有深入的解析,下面我们就来看看enterScene方法的定义,如下所示:
&code&enterScene(sceneName, args, transitionType, time, more)
它的参数分别是:
sceneName:表示跳转场景的场景名,也就是我们将要进入的场景的场景名。
args:表示跳转场景传给该场景类构造函数的参数,args需要是一个table。
transitionType:表示场景切换的过渡动画类型,lua中定义的过渡动画类型差不多有30种.
time:表示从当前场景跳转到 sceneName 场景的过渡时间。
more:表示过渡效果附加参数。
app:enterScene("GameScene", nil, "SLIDEINT", 1.0)
表示从当前场景切换到 GameScene 场景,切换的过渡动画是 SLIDEINT 类型(新场景 GameScene 从顶部进入,同时现有场景 MainScene 从底部退出),整个切换过程用时1秒。
transitionType可以是如下的一些类型:
crossFade:淡出当前场景的同时淡入下一个场景
fade:淡出当前场景到指定颜色,默认颜色为 ccc3(0, 0, 0),可用 wrapSceneWithTransition() 的最后一个参数指定颜色
fadeBL:从左下角开始淡出场景
fadeDown:从底部开始淡出场景
fadeTR:从右上角开始淡出场景
fadeUp:从顶部开始淡出场景
flipAngular:当前场景倾斜后翻转成下一个场景,默认从左边开始翻转,可以指定为:
cc.TRANSITION_ORIENTATION_LEFT_OVER 从左边开始
cc.TRANSITION_ORIENTATION_RIGHT_OVER 从右边开始
cc.TRANSITION_ORIENTATION_UP_OVER 从顶部开始
cc.TRANSITION_ORIENTATION_DOWN_OVER 从底部开始
flipX:水平翻转,默认从左往右翻转,可用的附加参数同上
flipY:垂直翻转,默认从上往下翻转,可用的附加参数同上
zoomFlipAngular:倾斜翻转的同时放大,可用的附加参数同上
zoomFlipX:水平翻转的同时放大,可用的附加参数同上
zoomFlipY:垂直翻转的同时放大,可用的附加参数同上
jumpZoom:跳跃放大切换场景
moveInB:新场景从底部进入,现有场景同时从顶部退出
moveInL:新场景从左侧进入,现有场景同时从右侧退出
moveInR:新场景从右侧进入,现有场景同时从左侧退出
moveInT:新场景从顶部进入,现有场景同时从底部退出
pageTurn:翻页效果,如果指定附加参数为 true,则表示从左侧往右翻页
rotoZoom:旋转放大切换场景
shrinkGrow:收缩交叉切换场景
slideInB:新场景从底部进入,直接覆盖现有场景
slideInL:新场景从左侧进入,直接覆盖现有场景
slideInR:新场景从右侧进入,直接覆盖现有场景
slideInT:新场景从顶部进入,直接覆盖现有场景
splitCols:分成多列切换入新场景
splitRows:分成多行切换入新场景,类似百叶窗
turnOffTiles:当前场景分成多个块,逐渐替换为新场景
此时刷新 player,我们就会看到跳转场景的效果。
转载请注明出自:
用代码改变世界
原文地址:, 感谢原作者分享。
您可能感兴趣的代码

我要回帖

更多关于 D(X) 的文章

 

随机推荐