将这两份代码复制到HelloCpp中,把cocos2d-x/templates/template-lua的Reource复制到HelloCpp中。
//HelloWorldScene.cpp
#include "HelloWorldScene.h"
#include "AppMacros.h"

#include "cocos-ext.h"

USING_NS_CC;
USING_NS_CC_EXT;


CCSprite* HelloWorld::createDog(){
    auto tmp = 2;
    auto frameWidth = 105/tmp, frameHeight = 95/tmp;

    auto visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    auto origin = CCDirector::sharedDirector()->getVisibleOrigin();

    auto textureDog = CCTextureCache::sharedTextureCache()->addImage("dog.png");
    auto rect = CCRectMake(0, 0, frameWidth, frameHeight);
    auto frame0 = CCSpriteFrame::createWithTexture(textureDog, rect);

    rect = CCRectMake(frameWidth, 0, frameWidth, frameHeight);
    auto frame1 = CCSpriteFrame::createWithTexture(textureDog, rect);

     // auto asmtest = CCSpriteBatchNode::create("dog.png");
    
// auto spriteDog = CCSprite::createWithTexture(asmtest->getTexture(), CCRectMake(0, 0, frameWidth, frameHeight));
    spriteDog = CCSprite::createWithSpriteFrame(frame0);
    spriteDog->setPosition( ccp(origin.x, origin.y+visibleSize.height/4*3) );

    auto animFrames = CCArray::create();
    animFrames->addObject(frame0);
    animFrames->addObject(frame1);

    auto animation = CCAnimation::createWithSpriteFrames(animFrames, 0.5);
    auto animate = CCRepeatForever::create(CCAnimate::create(animation));
    spriteDog->runAction(animate);

     return spriteDog;
}

CCScene* HelloWorld::scene(){
     //  'scene' is an autorelease object
    CCScene *scene = CCScene::create();
    
     //  'layer' is an autorelease object
    HelloWorld *layer = HelloWorld::create();

     //  add layer as a child to scene
    scene->addChild(layer);
     // scene->addChild(createLayerMenu());
    
// scene->addChild(createLayerFarm());
    
     return scene;
}

//  on "init" you need to initialize your instance
bool HelloWorld::init(){
     //  1. super init first
     if ( !CCLayer::init() ){
         return  false;
    }
    
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

     //  2. add a menu item with "X" image, which is clicked to quit the program
    
//     you may modify it.

    
//  add a "close" icon to exit the progress. it's an autorelease object
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                        "CloseNormal.png",
                                        "CloseSelected.png",
                                         this,
                                        menu_selector(HelloWorld::menuCloseCallback));
    
    pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
                                origin.y + pCloseItem->getContentSize().height/2));

     //  create menu, it's an autorelease object
    CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
    pMenu->setPosition(CCPointZero);
     this->addChild(pMenu, 1);

     /////////////////////////// //
     //  3. add your codes below

    
//  add a label shows "Hello World"
    
//  create and initialize a label
    
    CCLabelTTF* pLabel = CCLabelTTF::create("Hello Mark", "Arial", TITLE_FONT_SIZE);
    
     //  position the label on the center of the screen
    pLabel->setPosition(ccp(origin.x + visibleSize.width/2,
                            origin.y + visibleSize.height - pLabel->getContentSize().height));

     //  add the label as a child to this layer
     this->addChild(pLabel, 1);

    auto bg = CCSprite::create("farm.jpg");
    
    CCLog("0x%x\n", bg);
    
    bg->setPosition(ccp(origin.x + visibleSize.width /2, origin.y + visibleSize.height/2));
     this->addChild(bg);
    
    auto diff_platform = 2;
    auto derta_y = 70;
     for(auto i = 0; i < 4; ++i){
         for(auto j = 0; j < 2; ++j){
            auto spriteLand = CCSprite::create("land.png");
            spriteLand->setPosition(ccp(200 + j * 180/2 - i % 2 * 90/diff_platform, 
                derta_y + 10 + i*95/2/diff_platform));
             this->addChild(spriteLand);
        }
    }
    
    auto frameCrop = CCSpriteFrame::create("crop.png", CCRectMake(0, 0, 105/diff_platform -1, 95/diff_platform));
     for(auto i = 0; i < 4; ++i){
         for(auto j = 0; j < 2; ++j){
            auto spriteCrop = CCSprite::createWithSpriteFrame(frameCrop);
            spriteCrop->setPosition(ccp(10/diff_platform+200+j*180/diff_platform - i%2*90/diff_platform,
                derta_y + 30/diff_platform + 10 + i * 95 /2/diff_platform));
             this->addChild(spriteCrop);
        }
    }
    
    touchBeginPoint =  this->getPosition();
    
    auto spriteDog = HelloWorld::createDog();
     this->addChild(spriteDog, 1);
    
    CCDirector* pDirector = CCDirector::sharedDirector();
    pDirector->getTouchDispatcher()->addTargetedDelegate((CCTargetedTouchDelegate*) this, 0,  true);

    schedule(schedule_selector(HelloWorld::tick), 0.0f);

     return  true;
}


void HelloWorld::menuCloseCallback(CCObject* pSender){
    CCDirector::sharedDirector()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
}

void HelloWorld::tick( float ff){
    auto visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    auto origin = CCDirector::sharedDirector()->getVisibleOrigin();
    
     if( this->spriteDog == NULL){
        CCLog("this == %0x\n", ( int) this);
         return ;
    }
    
    auto x =  this->spriteDog->getPosition().x;
    
     if(x > origin.x + visibleSize.width){
        x = origin.x;
    } else{
        x += 1;
    }
    spriteDog->setPositionX(x);
}


bool HelloWorld::ccTouchBegan(CCTouch* touch, CCEvent*  event){ 
    CCLog("ccTouchBegan-----\n");

    touchBeginPoint = touch->getLocation();
    spriteDog->pauseSchedulerAndActions();
     return  true;
}

void HelloWorld::ccTouchEnded(CCTouch* touch, CCEvent*  event){
    CCLog("onTouchEnded-----\n");

    spriteDog->resumeSchedulerAndActions();
}

void HelloWorld::ccTouchMoved(CCTouch* touch, CCEvent*  event){
     // CCLog("onTouchmoved-----\n");

    auto touchEndPoint =  this->getPosition();
    auto x = touch->getLocation().x;
    auto y = touch->getLocation().y;
     this->setPosition(touchEndPoint.x + x - touchBeginPoint.x,
        touchEndPoint.y + y - touchBeginPoint.y);

    touchBeginPoint = CCPoint(x, y);
}


// HelloWorldScene.h
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"

class HelloWorld :  public cocos2d::CCLayer,  public cocos2d::CCTargetedTouchDelegate
{
public:
     //  Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
     virtual  bool init();  

     //  there's no 'id' in cpp, so we recommend returning the class instance pointer
     static cocos2d::CCScene* scene();
    
     void tick( float);
    cocos2d::CCSprite* createDog();
    

     //  a selector callback
     void menuCloseCallback(CCObject* pSender);

     //  implement the "static node()" method manually
    CREATE_FUNC(HelloWorld);

     virtual  bool ccTouchBegan(cocos2d::CCTouch* touch, cocos2d::CCEvent*  event);
     virtual  void ccTouchEnded(cocos2d::CCTouch* touch, cocos2d::CCEvent*  event);
     virtual  void ccTouchMoved(cocos2d::CCTouch* touch, cocos2d::CCEvent*  event);
private:
    cocos2d::CCSprite *spriteDog;
    cocos2d::CCPoint touchBeginPoint;
};

#endif  //  __HELLOWORLD_SCENE_H__