cocos2d-x的初步学习十七之坦克大战四

在这篇文章中,我们将添加坦克类,增加虚拟摇杆来移动我们的坦克。首页我们定义个坦克类,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的初步学习十七之坦克大战四_第1张图片

~~~~~~~~~~~~~

你可能感兴趣的:(游戏,cocos2d,地图,cocos2d-x,坦克大战)