如何使用cocos2d x官网-x完美呈现捕鱼3

中国领先的IT技术网站
51CTO旗下网站
洪志雄专访:如何使用Cocos2d-x完美呈现捕鱼3
《捕鱼达人3》采用了Cocos2d-x 3.x版本中的3D功能来进行开发,实现了完全的3D化。作为一款支撑了无数2D游戏产品的引擎,Cocos2d-x本次也将带来3D方面的功能扩展,帮助广大Cocos2d-x开发者.
作者:cocoachina来源:cocoachina| 10:06
本期我们采访了《捕鱼达人3》主程洪志雄,请他谈一谈这款游戏技术上的创新以及他对手游开发方面的感悟
毕业这几年,我前期一直在从事服务器相关的工作, 先是跟师兄创业搞p2p视频,中间涉及p2p网络,搜索,网站搭建等相关技术。后来跑到腾讯去做过一阵子分布式, 还用倒腾过一年的虚拟机。2012年的时候,趁着部门转型的机遇跳到手机游戏开发部门,从事客户端开发。所以,对于游戏开发,也算是半路出家。幸好,自己非常感兴趣,跟对着Linux的黑底白字写代码相比, 看着小人在自己的控制下蹦蹦跳跳,成就感更加强。再后来就来触控这边负责捕鱼达人3的研发工作,也是我现在整天在忙碌的事情。
1.捕鱼达人3与前两部相比,技术上有哪些突破和创新?
捕鱼达人3作为前两代成功作品的续作,我们需要从玩法到技术,全面超越前代。所以在技术上,我们主要做了下面一些突破和创新:
1)鱼的3D渲染。 跟2D渲染相比,3D渲染可以让鱼看起来更加立体和真实。 3D骨骼动画可以让动作更加丰富和平滑。另外我们还为鱼增加了表情动作,让鱼儿更具个性化。
2) 纯3D路径。 前两代的2D路径在我们新的3D场景下,表现力要弱很多。为此我们设计了全新的3D路径编辑器,鱼的游动不仅仅在一个面上游动,而是一个立体空间,这样鱼的游动过程会更加平滑和真实。
3) 丰富的武器表现效果。 以前的武器效果,我们一般是结合帧动画和粒子效果实现,在捕鱼3中,我们的武器很多是通过 shader 实现的,让效果更加绚丽和富于变化。比如闪电武器,泡泡武器等。
4) 3D的后处理和灯照效果。大家可以看到我首屏模拟海洋的效果,就用到相关技术。还有鱼身上的波光效果。
2.《捕鱼达人3》使用了最新的Cocos2d-x中3D功能,它有哪些突出的亮点?请举几个游戏里的具体案例说明
1)继承Cocos2d-x的设计思路,只要具备Cocos2d-x的编程经验, 在使用和理解上完全无障碍,可以立马上手写代码。
2) 丰富的材质系统,可以自定义模型不同渲染效果。 比如:我们的鱼身上的渲染效果已经电鳗鱼的闪电效果
3) 强大的模型编辑器,可以自定义模型的材质
3. 引擎3D功能使用的时候感觉和2D部分区别在哪?
设计理念和开发流程和2D差不多
4. 游戏里面的动画效果,是UI实现的,还是Cocos引擎的3D效果?比如那个漩涡,是不是使用引擎的3D效果可以做很多不同的漂亮效果呢?
渲染时用3D的材质系统实现的, 由于材质系统的扩展能力很强,做出各种漂亮的效果完全没问题。
5. Cocos2d-x的3D技术稳定性如何?是否已经到了可以大规模市场化应用的阶段?
挺好的,我们Android版本的适配度高达92%以上。
6. 引擎粒子效果的效率一直备受争议,请问捕鱼达人3有没有专门做优化?
我们对同一种粒子做了批次处理。另外,还通过脚本, 严格控制了粒子的个数,不能超过某个上限值。
7. 在《捕鱼达人3》开发过程中,遇到哪些困难和挑战?你们是如何克服的?
游戏开发都会面临一个资源的管理问题,就是资源如何从美术制作,在到程序使用以及后续的维护。捕鱼3的资源类型比较多。2D层有图片,ui资源,动画资源,字体资源,粒子资源。 3D层又涉及3D模型,材质,纹理,shader等。另外,还有track,策划配置文件等。所以种类非常多。 还因为捕鱼3的适配性要求比较高,所以,我们有些资源按照分辨率有划分了几大类。 还附加一条,资源还分不同的语言版本。 上线之后,资源本身还需要跟随发布版本一起维护。所以中间的问题非常多。 在我们项目中会严格对资源进行规范, 包括命名,目录结构。资源如何从美术维护的目录流动到程序使用的目录等。另外还维护了一套基于ant+python的脚本来去驱动资源的流转。 实现一键生成程序所需要的资源。 无须人工的干预, 非常便捷。
另外我们还有一键打Windows,iOS,Android各种程序包的脚本,方便做版本的daily build。
8. 《捕鱼达人3》的背后一定有一支强大的团队,包括多方面能力的配合,能否分享一下团队协作和管理的经验?
就我们研发而言, 其实最重要是前期做好开发规范,然后打造融洽的团队氛围,明确每个人的开发任务,大家随着项目的发展一起往前进步。
9. 最后,对其它有志进入手游行业或者在摸索中前行的手游开发者,您能否给一些建议?
虽然很多媒体都在高喊:手游已是一片红海。 但这个市场远没有饱和,移动设备的增量仍然很大。而且区别于端游市场的客户端大作,页游市场的各种网游。手游的游戏类型更加多样化,更加丰富。休闲的,棋牌的,各类网游,都有成功的案例。所以,这个市场更加灵活,更适合小团队创造奇迹,仍然有很多的机会。另外从技术上讲,由于存在Cocos2d-x这种几乎处于垄断地位的引擎, 手游也是一个更加开放的市场。 网上有一大堆的学习资料和游戏源码, 只要你有点计算机基础,入门还是很容易的。重要的是自己能够静下心来多看多写些代码,争取独立发布一款产品。我见过不少人自己做一点东西都没坚持下来,做一半就放弃掉。其实在多坚持下,离成功就近了很多。
【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条头条外电头条
24H热文一周话题本月最赞
讲师:91537人学习过
讲师:30404人学习过
讲师:159302人学习过
精选博文论坛热帖下载排行
Python是目前流行的脚本语言之一。本书由浅入深、循序渐进地讲解如何使用Python进行程序开发。全书内容包括Python安装、开发工具简介、Pyth...
订阅51CTO邮刊Cocos2D-X 与Unity3D 的发展之路【汇众教育吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,623贴子:
Cocos2D-X 与Unity3D 的发展之路收藏
目前游戏界的发展趋势逐渐把游戏引擎当做一个比较成熟的中间件了,许多toolset和基础构建在不同游戏中是相通的,曾经有人比喻游戏引擎在不久的将来会像现在的操作系统一样,呈现出一种比较稳定的状态(比如现在比较活跃的操作系统只有Widnows和Linux了)。如果追求性能的话,实际上可以重写Unity或者其他引擎中的Renderer和Shader来进行改进,所以追求性能不能成为使用自研引擎的借口了。而且,国内的许多公司的引擎,比如畅游. 也只是把ORGE啥的改一改, toolset和平台建设远远不如Unity,现在可能连Cocos2d-x都不如了。国内许多的 &自研引擎& 还有继续存在的价值吗?是不是应该放弃 ”自研引擎“ 呢?分角度叙述一:Unity3D将无可挽回的,或者说,势在必得的,成为接下来很多年内,世界移动领域游戏引擎市场霸主。回顾历史,正如同咱们经历过一次又一次的互联网时代变革一样,x86,windows,Google,facebook,twitter,当一个具备一定规模的产品在一定领域达成霸主地位之后,其它的同类产品从技术积累上、推广成本上、对用户的掌握程度上等等方面的差距均会无可挽回的越拉越大。即使对于引擎这种核心技术较多的产品,这种差距也不是一两个明星级别的程序员可以挽回的。不论是易用性、性能优化、提供更多功能、覆盖更多平台,这些对于引擎开发团队来说,都是赤裸裸的成本。随着时间的推移,这个门槛会越来越高,高到后来者根本没有办法企及的程度。这就正如你打算现在开一家公司,研发一个操作系统去销售,即使你投入数以亿计的资金,可能你也刚刚攻关完微软早在十几年前就在实验室得出结论的问题。这还仅仅是技术,比起微软完备的推广、销售渠道,你在创业初期多半还需要自己上门推广;比起微软完备的亿级用户的体验收集分析系统,你可能不得不邀请数以十计的朋友或家人体验你的产品。这一切的门槛,都是无法挽回的。分角度叙述二:cocos2d将在2D游戏研发领域持续的占据一定的市场,但在3D领域会败的体无完肤。cocos2d与Unity3D的关系某种程度上类似linux与windows的关系。前者打着开源的旗号,由社区发展而来,后者从诞生开始就是商业闭源的。根据程序员的劣根性,开源会让他们产生一种虚假的掌控感,让他们以为,如果引擎是开源的,那么在引擎遇到BUG的时候,他们就可以去查看代码并修复。尽管这种感觉在大多数时候是错误的(这里不深入讨论了),即使在小部分时候正确,带来的好处也远不如使用商业引擎降低的成本,但这有助于保证一部分忠实用户,一旦用户花费了大量的学习成本去学习一个引擎,在没有特别的必要性的情况下,他转投其它类似产品的可能性是很小的。另一方面,Unity3D在2D领域多少还有一些水土不服的现状,它并没有完好的提供大部分2D游戏研发者所适应的工作模式,它的体积庞大,不能满足众多小渠道瘦身包的要求。它的架构和设计严丝合缝,因此并不容易满足一部分特殊的需求。所以在需求多变的2D游戏领域,目前cocos2d才是当之无愧的霸主,Unity3D并不容易吃下这部分市场。但是在3D领域,cocos3d落后的太多,不论是资源管理、场景管理、渲染框架,这在OpenGL ES 2.0普及的时代可能还不明显,但是随着OpenGL ES 3.0的发布到普及,技术门槛会大幅的提高,cocos3dx将沦为一个只能画画简单场景的小众引擎,时间的差距和投入的差距会让它跟Unity3D无法抗衡。另一方面,cocos2d的结构较为松散,比起Unity3D富有设计感的API,cocos2d更像一个功能堆砌的产物。对于小规模的项目来说,问题可能并不明显,只要少量的增加程序员(或者让他们加班!?)就能解决问题,但是随着项目规模的扩大,参与人数的增加,混乱和无尽的BUG是我能看到的唯一结局。分角度叙述三:国产自研引擎尤其是商业自研引擎在一段时间内还将继续持续存在。且不说楼上有人提到的“自研情节”,单纯从商业角度来分析一下。1、引擎市场是一个对技术支持等服务要求非常高的市场。对于一个非英语母语的国家来说,本地化服务是一个非常重要的服务。在Unity3D真正成长为一个强大的跨国企业之前,还有充足的时间留给国产引擎公司存活,并且很可能成长为类似百度在搜索领域这样独霸一方的角色。某种程度上,我认为搜狐畅游的Genesis-3D打的是这个算盘,结果怎样还需观察。2、正如同有人提到的,像Unity3D这样通用化的引擎,还是很难为一个特定的游戏类型提供足够的支撑服务。对于一个特定的游戏类型,在Unity3D完美覆盖之前,还有充足的时间留给一个特定的引擎成长,建立稳定的社区,拥有稳定的用户。典型的代表有橙光文字游戏制作工具。3、对于一个一定规模的公司来说,拥有自己的引擎,拥有一个属于自己的公司的技术支撑团队,就目前来看依然是有价值的。这不但会大大降低引擎学习研究适应的风险,也有助于这家公司在某些细分领域建立自己的技术门槛,甚至还有利于降低核心员工流失率。4、对于一些具备核心技术人员的小型团队,只要不奢望一个大而全的引擎解决方案,拥有一个自己的引擎(不是一个庞然大物,而是一个小清新的工具&库集合和自我的积累)依然是一个既有助于调动核心技术人员积极性,又能快速响应和满足当下并不复杂的需求的方案。这个思路的典型代表是云风的Ejoy2D。分角度叙述四:引擎研发团队还有更多新的机会。1、船小好调头,任何一个大的引擎,达到一定的规模,它登陆一个新的平台或环境都会有比较大的时间成本。相比起来,小规模引擎快速登陆一个平台,在新的平台上快速抢占市场,会是比较大的机会。这个方案的典型代表是Unity3D自己。在几年前,提到游戏引擎的时候人们想到的都是Unreal、Crystal,而那时候的Unity3D只是一个活在浏览器插件里的、主要面向甚至不完全是游戏的,极小众的引擎。但是Unity3D抓住了智能手机浪潮的先机,快速抢占了市场,不但成就了新一轮的神话,甚至在PC、主机等平台上产生了反攻之势。这件事是否会重演?谁也不知道。2、服务,服务,还是服务。对于一部分客户来说,他们不关心这个引擎的核心多么有技术含量,所用的算法有多么高大上,他们最关心的,是他们面临的需求和问题能否得到解决。比起十几年的技术积累,丰富的文档资料,他们更想要的是一封快速回复的邮件,一个电话,甚至是一次上门的培训或技术支撑。想要做好服务,你需要是一个有一定技术积累的团队,但你甚至未必需要有一个自己的引擎。想想吧,当windows大潮来临的时候,真正赚钱的是投入几千万几亿研发一个新操作系统试图跟windows正面抗衡的公司,还是那些卖盗版碟,搞windows office培训班的团队?3、适应新的互联网时代社会化大生产模式。作为一个引擎团队,你具备的可能是技术实力、研发能力,有可能你认为自己不适合去做什么经销培训的事情,那么一定还有一件事情你可以做,就是借助社区和平台,进行互联网式的分工协作。一个别人无法完成的需求,一个别人无法实现的技术难题,如果对于你来说是迎刃而解的,那么不必拥有自己的引擎,你也可以在互联网时代获得你自己的立足之地。
免费入学拿正规学历!低付出,高回报,拥有领先行内的教学理念,6个月毕业,毕业即拿证,终身就业指导,月薪20K轻松拿,钱途无限.
咱们中关村汇众是Cocos2D-x的课程和Unity3d的课程都是有开设的。Cocos2D-x的课程链接:
Unity3d的课程链接:
咱们学校是在中关村互联网教育创新中心17层,可以来咱们学校了解一下的
登录百度帐号推荐应用1938人阅读
捕鱼达人实现
wangqiao123原创,欢迎转载,转载请在明显处注明! 谢谢。
初学cocos2d-x,捕鱼达人也搞了很长时间了,经历过迷惘,最终克服了困难,这是其中关于子弹层的编写,也是我的第一篇博文吧,大家可以作为借鉴,其中注释已经很详细了,这也算是我的学习笔记吧,其他的类以后会陆陆续续的发出来.
#ifndef __BULLET_H__
#define __BULLET_H__
#include &BasicLayer.h&
#include &GameCore.h&
#include &cocos2d.h&
USING_NS_CC;
class BulletLayer:public BasicLayer
CCSprite *m_BulletS
BulletLayer(void);
~BulletLayer(void);
virtual bool init();
static CCScene *scene();
void main();
//发射子弹
炮台类型(特殊处理子弹的大小
运用放缩原理)
void BulletFire(const CCPoint &ptStart,float rotation,GameCore::enCannonType CannonType);
/*不需要,只有在返回类型是指针或者引用类型的时候才有意义,表示不允许通过这个返回的指针或者返回的引用去修改数据。
有时候也用于返回类型是自定义类型的情况,不允许对返回值再直接赋值,但这种用法只在理论上有意义。*/
//子弹回调函数
void BulletEndCallback(CCNode* sender);
CREATE_FUNC(BulletLayer);
#endif __BULLET_H__
#include &BulletLayer.h&
#include &GameScene.h&
#include &GameCore.h&
#include &cocos2d.h&;
USING_NS_CC;
BulletLayer::BulletLayer(void)
BulletLayer::~BulletLayer(void)
bool BulletLayer::init()
bool bRet =
CC_BREAK_IF(!BasicLayer::init());
//加载炮弹的纹理缓存
CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache -& CCSpriteFrameCache::addSpriteFramesWithFile(&Fish/plist/shot_0_3.plist&,&Fish/plist/shot_0_3.png&);
cache -& CCSpriteFrameCache::addSpriteFramesWithFile(&Fish/plist/shot_1_3.plist&,&Fish/plist/shot_1_3.png&);
//加载炮弹的动画纹理缓存
CCAnimationCache *animacache = CCAnimationCache::sharedAnimationCache();
animacache -& CCAnimationCache::addAnimationsWithFile(&Fish/plist/shot_0_3_anims.plist&);
animacache -& CCAnimationCache::addAnimationsWithFile(&Fish/plist/shot_1_3_anims.plist&);
} while (0);
this-&main();
//类外调用
CCScene *BulletLayer::scene()
CCScene *scene = CCScene::create();
BulletLayer *bulletLayer = BulletLayer::create();
scene-&addChild(bulletLayer);
void BulletLayer::main()
//发射子弹函数
void BulletLayer::BulletFire(const CCPoint &ptStart,float rotation,GameCore::enCannonType CannonType)
发射的炮弹是一个无限循环的动画
实现炮弹的 分级
1-4 级炮弹是一组图片
5-7级炮弹是一组图片
CBulletObject *pBulletObject = new CBulletO
pBulletObject-&m_CannonType = CannonT//对子弹数据进行赋值
int nFish = 0;//实现炮弹分级
if (CannonType&GameCore::CannonType_4)
nFish = 1;
CCSize szS//缩放大小
switch (CannonType)
case GameCore::CannonType_0: { szScale.width=0.5f; szScale.height=0.5f; }
case GameCore::CannonType_1: { szScale.width=0.6f; szScale.height=0.6f; }
case GameCore::CannonType_2: { szScale.width=0.7f; szScale.height=0.7f; }
case GameCore::CannonType_3: { szScale.width=0.8f; szScale.height=0.8f; }
case GameCore::CannonType_4: { szScale.width=0.9f; szScale.height=0.9f; }
case GameCore::CannonType_5: { szScale.width=0.9f; szScale.height=0.9f; }
case GameCore::CannonType_6: { szScale.width=1.0f; szScale.height=1.0f; }
ostr&&&shot_&&&nFish&&&_3_01.png&;//将第一帧赋予精灵,
plist 里的文件名
CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();//读取缓存
m_BulletSprite = CCSprite::createWithSpriteFrame(cache-&spriteFrameByName(ostr.str().c_str()));
m_BulletSprite-&setUserObject(pBulletObject);//将子弹数据加入用户数据对象
//m_BulletSprite = CCSprite::create(&Fish/plist/1.7.png&,CCRectMake(193,0,47,48));//后面可以跟位置属性
//m_BulletSprite-&setUserObject(pBulletObject);//将子弹精灵设置为子弹类对象
貌似没找到setUserObject的定义
//计算子弹终点坐标
CCPoint ptEnd (ptStart.x+57*std::sin(rotation*M_PI/180), ptStart.y+57*std::cos(rotation*M_PI/180));//rotation*M_PI/180 角度转化成弧度
弧度转换成角度 rotation*180/M_PI
106是预定半径
m_BulletSprite-&setPosition(ptEnd);//指定目标
子弹出发点
距炮口一段距离
m_BulletSprite-&setRotation(rotation);//旋转角度
m_BulletSprite-&setScaleX(szScale.width);//X放大比例
m_BulletSprite-&setScaleY(szScale.height);//Y放大比例
addChild(m_BulletSprite);
ostr.str(&&);//???
ostr&&&shot_&&&nFish&&&_3_capture&;
CCAnimationCache *animacache = CCAnimationCache::sharedAnimationCache();
CCAnimation *bulletMoves = animacache-&animationByName(ostr.str().c_str());//CCAnimation
bulletMoves-&setRestoreOriginalFrame(true);
//bulletMoves-&setLoops(-1);
CCRepeatForever *Actbullet=CCRepeatForever::create(CCAnimate::create(bulletMoves));
/*CCAnimate *Actbullet = CCAnimate::create(bulletMoves);*/
m_BulletSprite-&runAction(Actbullet);
CCMoveBy *actBullet = CCMoveBy::create(1.2f,ccp(320*std::sin(rotation*M_PI/180),320*std::cos(rotation*M_PI/180)));
CCSequence *seq=(CCSequence*)CCSequence::create(actBullet,CCCallFuncN::create(this, callfuncN_selector(BulletLayer::BulletEndCallback)), NULL);
//CCFiniteTimeAction *seq=CCSequence::create(actBullet, NULL);
//CCSequence *seq = (CCSequence*)CCSequence::create(actBullet, NULL);
m_BulletSprite-&runAction(seq);
//在这里张开网
void BulletLayer::BulletEndCallback(CCNode* sender)
CCLOG(&BulletLayer::BulletEndCallback&);
//getUserObject()返回与此节点关联的 Object 值
CBulletObject *pBulletObject = (CBulletObject *)sender-&getUserObject();// 指向子弹节点
//判断是否张开网
CCPoint pt = sender-&getPosition();
if (pt.x&=0 && pt.x&=Size.width && pt.y&=0 && pt.y&=Size.height)
GameScene *pGameScene = (GameScene*)getParent();//获取父节点
pGameScene-&m_NetLayer-&NetFire(pt,pBulletObject-&m_CannonType);
pBulletObject-&release();
removeChild(sender,true);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5393次
排名:千里之外
(1)(1)(2)(1)千锋教育-稀有的坚持全程面授品质的大型IT教育机构
400-654-7778
当前位置:&>&&>& &>& 正文
千锋独家出品《Cocos2D-X游戏开发视频教程-捕鱼达人》
&&&&&&&&Cocos2D-X是国内使用广泛的开源的移动2D游戏框架,目前市场占有率超过70%, 是一款C++ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台。Cocos2d-x提供的框架外,手机游戏,可以写在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容。Cocos2d-x项目可以很容易地建立和运行iOS,Android的三星Bada,黑莓Blackberry操作系统和更多。Cocos2d-x还支持Windows、Mac和Linux等桌面操作系统,因此,我们可以编写的源代码很容易在桌面操作系统中编辑和调试。
&&&&&&&&千锋的宗旨就是&不浮夸,不虚假,踏踏实实用良心做教育&,我们的目的就是解决大学生就业问题,为企业输送人才。在此推出《Cocos2D-X游戏开发视频教程-捕鱼达人》,由千锋金牌讲师欧阳老师讲授,为对iOS行业感兴趣的广大爱好者,提供最专业的教学视频,引领他们进入iOS的大门!
&&&&&&&&千锋金牌讲师欧阳老师简介:
&&&&&&&&中国iOS教学视频第一人、中国iOS教学引领者,清华大学硕士,原FSMLabs中国区技术总监,10多年软件开发经验,8年多教学经验,3年多iOS、Android开发经验,负责开发ARM处理器在RTLinux实时操作系统的升级,移植和维护。
&&&&&&&&本次视频全程以捕鱼达人为项目案例讲述如何使用Cocos2D-X来开发这样一款游戏。本次视频使用了主流的C++开发语言,内容覆盖了Cocos2D-X游戏启动流程,暂停恢复游戏, 游戏场景创建, 定时器使用, CCLayer的生命周期, CCNode介绍和继承关系图, CCAction原理, 串行动作CCSequence, 标准触摸事件, 缩放CCScale动作, 精灵BatchNode处理, Zwoptex, TexturePacker工具使用, 游戏性能提升,Bezier曲线介绍, 多继承和代理等技术点。基本上覆盖了做游戏使用的主流技术和开发热点。 读者可以通过本项目入门并掌握使用Cocos2D-X的开发知识和中级技术。
&&《视频教程-第1季》:
&&《视频教程-第2季》:
&&《视频教程-第3季》:
&&《视频教程-C语言基础》:
&&《视频教程-C++语言》:
&&《视频教程-OC语言》:
&&官方高清视频下载地址:
&&就业班:
无相关信息
北京天丰利校区(总部):北京市海淀区宝盛北里西区28号天丰利商城4层
北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术学院广场服务楼2层、南区服务楼2层
咨询电话:400-654-7778
面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、大数据开发培训、VR/AR混合现实培训、Python培训、Linux云计算培训、软件测试培训、Android培训、iOS培训、好程序员
深圳西部硅谷校区地址:深圳市宝安区宝安大道5010号深圳西部硅谷A区B座605-619
深圳大学城校区地址:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
咨询电话:5-801(硅谷校区)0-801(大学城校区)
面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android培训、iOS培训
上海校区地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
咨询电话:400-627-79
面授课程:全栈HTML5+培训、UI交互设计培训、JavaEE+云数据培训、Android课程培训、iOS课程培训、好程序员
郑州校区地址:郑州市金水区纬五路21号河南教育学院综合楼(经纬中学楼)7/8层
咨询电话:0 400-654-7778
面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
广州校区地址:广州市天河区元岗路310号智汇park创意园E座5层
咨询电话:020--654-7778
面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
大连校区地址:辽宁省大连市甘井子区软件园路2号东软信息学院B5座一楼
咨询电话:6 400-654-7778
面授课程:全栈HTML5+培训、JavaEE+云数据培训、UI交互设计培训、Android课程培训、iOS课程培训
武汉校区地址:武汉市光谷大道61号智慧园21号楼2层
咨询电话:027-
面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
成都校区地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
咨询电话:028-
面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
西安校区地址:西安市雁塔区高新六路52号立人科技C座西区4楼
咨询电话:029-
面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训
杭州校区地址:浙江省杭州市江干区九堡旺田书画城A座4层
咨询电话:2
面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
青岛校区地址:青岛市市南区金坛路17号青岛职业技术学院南校区实训楼A4层
咨询电话:2/3
面授课程:全栈HTML5+培训、UI交互设计培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
重庆校区地址:重庆市高新区科园一路2号大西洋国际12-1
咨询电话:023-
面授课程:JavaEE+云数据课程培训
长沙校区地址:湖南省长沙市岳麓区麓谷企业广场A2栋三单元306号
咨询电话:400-654-7778
面授课程:JavaEE+云数据课程培训
了解千锋动态关注千锋教育服务号
扫码匿名提建议直达CEO信箱
京ICP备号-3 京公网安备55号

我要回帖

更多关于 cocos2d x lua 的文章

 

随机推荐