cocos2d-x的初步学习十七之坦克大战四
来源:互联网 发布:淘宝猎狐者户外冲锋衣 编辑:程序博客网 时间:2024/05/01 07:05
在这篇文章中,我们将添加坦克类,增加虚拟摇杆来移动我们的坦克。首页我们定义个坦克类,TankSprite继承自CCSprite,我们定义一些属性,比如坦克的类型,坦克移动的速度,坦克移动的方向等,下面直接上代码:
TankSprite.h
#include "cocos2d.h"typedef enum { kBorn = 1, kPlusStarOne, kPlusStarTwo, kPlusStarThree}TankKind;typedef enum { kUp = 1, kDown, kLeft, kRight, kFire, kStay, kPause }TankAction;class TankSprite: public cocos2d::CCSprite{public: virtual bool init(); CREATE_FUNC(TankSprite); static TankSprite* initWithDelegate(int numLife,int tKind,cocos2d::CCSize mSize); //定义移动速度 int _speed; //life int _life; //地图size cocos2d::CCSize _mapSize; //tank类型 TankKind kind; //tank移动方向 TankAction kaction; };TankSprite.cpp
#include "TankSprite.h"#include "SimpleAudioEngine.h"using namespace cocos2d;using namespace CocosDenshion;bool TankSprite::init(){ ////////////////////////////// // 1. super init first if ( !CCSprite::init() ) { return false; } return true;}TankSprite* TankSprite::initWithDelegate(int numLife, int tKind, CCSize mSize){ TankSprite *tank; switch (tKind) { case kBorn: tank=(TankSprite *)CCSprite::createWithSpriteFrameName("p1.png"); tank->_speed=1; break; case kPlusStarOne: break; case kPlusStarTwo: break; case kPlusStarThree: break; default: break; } tank->_life=numLife; tank->_mapSize=mSize; tank->kind=(TankKind)tKind; tank->setScale(0.7); //默认向上 tank->kaction=kUp; return tank; }
上面我们就简单了定义了一个坦克类,然后我们加入到我们的地图层中,
在MapLayer.cpp中
//获取objectgroup _objects=gameMap->objectGroupNamed("objects"); //初始化tank _tank1=TankSprite::initWithDelegate(numLife, tKind, _bg1Layer->getContentSize()); //tank的出生地 CCPoint tankPoint=this->objectPosition(_objects, "pl1"); _tank1->setPosition(ccp(tankPoint.x+gameMap->getTileSize().width, tankPoint.y+gameMap->getTileSize().width)); gameMap->addChild(_tank1, 1);
//获取地图中定义的一些坐标点CCPoint MapLayer::objectPosition(CCTMXObjectGroup *group,const char *object){ CCPoint point; CCDictionary *dic=group->objectNamed(object); point.x=dic->valueForKey("x")->intValue(); point.y=dic->valueForKey("y")->intValue(); return point; }
这样,我们就把tank加入到我们的地图中去了,,,
~~~~~~~~~~~~~
- cocos2d-x的初步学习十七之坦克大战四
- cocos2d-x的初步学习十四之坦克大战一
- cocos2d-x的初步学习十五之坦克大战二
- cocos2d-x的初步学习十六之坦克大战三
- cocos2d-x的初步学习十八之坦克大战五
- cocos2d-x的初步学习十九之坦克大战六
- cocos2d-x的初步学习二十之坦克大战七
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示
- cocos2d-x游戏开发系列教程-坦克大战游戏之敌方坦克AI的编写
- cocos2d-x游戏开发系列教程-坦克大战游戏之所有坦克之间的碰撞检测
- cocos2d-x的初步学习二十七之连连看三
- cocos2d-x的初步学习四
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测上
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测下
- cocos2d-x游戏开发系列教程-坦克大战游戏之虚拟手柄的显示
- cocos2d-x游戏开发系列教程-坦克大战游戏之子弹的碰撞检测处理
- cocos2d-x游戏开发系列教程-坦克大战游戏之虚拟手柄的显示
- cocos2d-x游戏开发系列教程-坦克大战游戏之虚拟手柄控制坦克移动
- c++关于calloc、memcpy、strncpy的陷阱
- 母函数练习2 HDU 1085
- Winform Log4Net实战:实现每天一个文件记录服务程序的执行情况。
- 感知计算:开发人员的十大资源
- rss TIOBE Programming Community Index for June 2013
- cocos2d-x的初步学习十七之坦克大战四
- 维斯(Vizrt)系统学习资源列表(持续更新)
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 配置FCKeditor_2.6.3+fckeditor-java-2.4
- nyoj499 + 迷宫 + dfs
- POJ 1088:滑雪
- 【分布式系统工程实现】CAP理论及系统一致性
- 【牛奶豆腐汤喝出小蛮腰】
- win7下不能双击打开Jar包的解决方案