Cocos2d 学习,记忆数字游戏

来源:互联网 发布:送礼物的淘宝店铺 编辑:程序博客网 时间:2024/05/07 16:10

接触Coco2dx 十来天,今天终于成功生成card app
记忆数字的游戏由三部分构成:场景一:难度等级+退出游戏
场景二:游戏主场景(主要部分)
场景三:提示游戏结束
一.预备知识

(1)环境搭建+创建工程
需要的安装包:
编译环境:vs2013
cocos2dx源码包:cocos2d-x-2.2.6.zip
运行创建工程脚本的工具:python-2.7.11rc1.amd64.msi
python:

安装python
点击安装python ,安装好需要配置python的环境变量:我的电脑->右键属性->高级系统设置->环境变量!


设置完成后
这里写图片描述

表示python 安装成功
用python 运行cocos2dx创建工程脚本。

这里写图片描述
创建工程完成后,打开cocos2d-x-2.2.6\projects目录,就能看到你所创建的项目文件夹
这里写图片描述
打开文件夹,会看到一个基于多平台的cocos2dx解决方案文件夹,我们选择win32
这里写图片描述
双击该文件夹下,阴影中的解决方案文件,然后用vs2013编译运行我们的工程,经过漫长的编译,看到如下界面,表示你安装成功
这里写图片描述

(2)基础入门
游戏逻辑框架
这里写图片描述
需注意的是:一个导演同一时间只能运行一个场景,一个场景中,可以同时加载多个层,一个层可以同时加载多个精灵。层中亦可以加层
scene->addChild(layer)
layer->addChild(sprite)
工厂方法

A.hclass A{public:    static A* create();    static CCScene*scene();    bool init();    };
A.cppA*A::create(){    A *pRet = new A();    if (pRet&&pRet->init())    {        pRet->autorelease();    }    else    {        delete pRet;        pRet = NULL;    }    return pRet;}bool A::init(){    CCLayer::init();     return false;}

锚点
这里写图片描述
当忽略锚点时,从(0,0,)开始
这里写图片描述
当锚点设置成为默认时
这里写图片描述

精灵的创建方法

//T02LayerSprite.cppbool T02LayerSprite::init(){    CCLayer::init();    //第一种加精灵的方法    CCSprite *bg = CCSprite::create("sprite/background.jpg",CCRectMake(0,0,480,320));    bg->setAnchorPoint(ccp(0, 0));    bg->setPosition(CCPointZero);    addChild(bg);    //第二种加精灵的方法    CCImage *image = new CCImage();    image->initWithImageFile("sprite/plant.png");    CCTexture2D *texture = new CCTexture2D();    texture->autorelease();    texture->initWithImage(image);    CCSprite * plant = CCSprite::createWithTexture(texture);//纹理    plant->setPosition(ccp(100, WinSize.height / 2));    addChild(plant);    //第三种方法    CCTexture2D*texture2=CCTextureCache::sharedTextureCache()->addImage("sprite/bullet.png");    CCSprite *bullet = CCSprite::createWithTexture(texture2);    bullet->setPosition(ccp(200, WinSize.height / 2+10));    addChild(bullet);    //第四种方法    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite/zombie.plist");    /*CCSpriteFrame *sf = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("z_1_attack_01.png");    CCSprite *zombie = CCSprite::createWithSpriteFrame(sf);*/    CCSprite *zombie = CCSprite::createWithSpriteFrameName("z_1_attack_01.png");    zombie->setPosition(ccp(400, WinSize.height / 2-50));    addChild(zombie);    CCJumpBy *by = CCJumpBy::create(2, ccp(0, 0), 40, 3);    zombie->runAction(CCRepeatForever::create(by));    //第五种方法    CCSpriteFrame *frame = CCSpriteFrame::create("sprite/p_1_01.png", CCRectMake(0, 0, 80, 80));    CCSprite *sun = CCSprite::createWithSpriteFrame(frame);    sun->setPosition(ccp(400, WinSize.height / 2 + 50));    addChild(sun);    sun->setZOrder(100);//加入顺序    zombie->setZOrder(200);    return true;}
//T02LayerSprite.h#include"cocos2d.h"USING_NS_CC;class T02LayerSprite:public CCLayer{public:     static CCScene *scene();    CREATE_FUNC(T02LayerSprite);    bool init();};

多彩的幕布

//T04ColorLayer.h#ifndef __T04ColorLayer_H__#define __T04ColorLayer_H_#include"cocos2d.h"USING_NS_CC;class T04ColorLayer :public CCLayerColor{public:    static CCScene *scene();    CREATE_FUNC(T04ColorLayer);    bool init();};#endif
//T04ColorLayer.cpp#include "T04ColorLayer.h"#include"AppMacros.h"class LayerGradient :public CCLayerGradient//实现渐变{public:    CREATE_FUNC(LayerGradient);    bool init()    {        CCLayerGradient::initWithColor(ccc4(255,0,0,255),ccc4(0,0,255,255),ccp(0,0));//末尾参数表示实现渐变的放向        return true;    }};CCScene *T04ColorLayer::scene(){    CCScene *scene = CCScene::create();    //T04ColorLayer *layer = T04ColorLayer::create();    LayerGradient*layer = LayerGradient::create();    scene->addChild(layer);    return scene;}bool T04ColorLayer::init(){    CCLayerColor::initWithColor(ccc4(255,255,255,255),100,100);//最后一个参数表示透明度为255,表示不透明    ignoreAnchorPointForPosition(false);//表示不忽略锚点    return true;}

世界坐标与节点坐标
//实现左右移动
CCMoveBy *by = CCMoveBy::create(2, ccp(200, 0));//时间,x轴偏移两百,y轴不偏移
CCMoveBy by2 = (CCMoveBy )by->reverse();
CCSequence *seq = CCSequence::create(by, by2, NULL);//坐标点
big->runAction(CCRepeatForever::create(seq));
(实现左右来回往返的移动)

定时器
帧循环定时器

scheduleUpdate();void T07Schedule::update(float dt){    CCLog("dt=%g", dt);    static int i = 0;    i++;    if (i == 2)    {        unscheduleUpdate();        CCLog("schedule is over");    }}

一次性定时器
scheduleOnce(schedule_selector(T07Schedule::mySchedule), 2);
schedule(schedule_selector(T07Schedule::mySchedule));//功能等同于scheduleUpdate();回调函数可以自定义
//schedule(schedule_selector(T07Schedule::mySchedule), 3);//隔三秒调用一次
//schedule(schedule_selector(T07Schedule::mySchedule), 1, 10, 4);//4s 后先执行一次,以后每隔1s执行一次回调函数,执行10次,共执行11次

触摸touch

//T08Touch.h#ifndef __T08Touch_H__#define  __T08Touch_H__#include "cocos2d.h" USING_NS_CC;class T08Touch :public CCLayerColor{public:    static CCScene * scene();    CREATE_FUNC(T08Touch);    bool init();    enum  MyEnunm    {        BN747    };    bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);    void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);    void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);    void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);};#endif
//T08Touch.cpp#include "T08Touch.h"#include"AppMacros.h"class NoTouch :public CCLayerColor{public:    CREATE_FUNC(NoTouch);    bool init()    {        CCLayerColor::initWithColor(ccc4(100, 100, 100, 200));        CCTouchDispatcher* pDispatcher = CCDirector::sharedDirector()->getTouchDispatcher();        pDispatcher->addTargetedDelegate(this, -1, true);//当参数为-1的时候添加屏蔽层,飞机无法移动,为0,1时都可以移动        return true;    }    virtual  bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)    {        return true;    }};CCScene *T08Touch::scene(){    CCScene *scene = CCScene::create();    T08Touch *layer = T08Touch::create();    NoTouch *noLayer = NoTouch::create();    scene->addChild(layer);    scene->addChild(noLayer);    return scene;}bool T08Touch::init(){    CCLayerColor::initWithColor(ccc4(255,255,255,255));    setTouchEnabled(true);    setTouchMode(kCCTouchesOneByOne);    CCSprite *plane = CCSprite::create("hero1.png");    plane->setPosition(ccp(100, 100));    addChild(plane);    plane->setTag(BN747);    return true;}bool  T08Touch::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){    CCSprite *plane = (CCSprite *)getChildByTag(BN747);    CCPoint pt = pTouch->getLocation();    if (plane->boundingBox().containsPoint(pt))    {        CCLog("Touched");        return true;    }    return false;//开关决定消息是否往下传}void  T08Touch::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){    CCSprite *plane = (CCSprite *)getChildByTag(BN747);    CCPoint pt = pTouch->getLocation()+ pTouch->getDelta();    if (pt.x > plane->getContentSize().width / 2 && pt.x < WinSize.width - plane->getContentSize().width / 2        &&pt.y>plane->getContentSize().height/2&&pt.y<WinSize.height-plane->getContentSize().height/2)    {        plane->setPosition(pt);    }    CCLog("ccTouchMoved  x=%g,y=%g", pt.x, pt.y);}void  T08Touch::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){    CCLog("ccTouchEnded");}void  T08Touch::ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent){    CCLog("ccTouchCancelled");}

内存管理
CCArray继承自CCObject,而非CCNode,没法加到渲染树上去,但是参加了内存托管,所以应该手动处理。

    array = CCArray::create();    array->retain();   //手动添加    spr = CCSprite::create("CloseNormal.png");    CCSprite *spr2 = CCSprite::create("p_3_01.png");

标签CCLable

CCLabelTTF *ttf = CCLabelTTF::create("Score", "Courier New", 50);//第一个为打印的数字,第二个为字体,第三个为字体的大小

菜单

CCMenuItem *easyItem = CCMenuItemFont::create("Easy", this, menu_selector(LayerStart::easy));    CCMenuItem *hardItem = CCMenuItemFont::create("Hard", this, menu_selector(LayerStart::hard));    CCMenuItem *veryHard = CCMenuItemFont::create("VeryHard", this, menu_selector(LayerStart::veryHard));    CCMenuItem *quietItem = CCMenuItemFont::create("Quit", this, menu_selector(LayerStart::quit));    CCMenu *menu = CCMenu::create(easyItem, hardItem, veryHard, quietItem, NULL);    menu->alignItemsVerticallyWithPadding(30);//建立四个选项    addChild(menu)

二.游戏:记忆数字游戏
(1)各部分程序书写
1,首先实现游戏各难度等级以及退出的菜单

 //LayerStart.h   #ifndef __LayerStart_H__#define __LayerStart_H__#include"cocos2d.h"USING_NS_CC;class LayerStart:public  CCLayer{public:    CREATE_FUNC(LayerStart);    static CCScene *scene();    bool init();    void easy(CCObject *);    void hard(CCObject *);    void veryHard(CCObject *);    void quit(CCObject *);    enum DEGREE    {        EASY=5,HARD=7,VERYHARD=9    };};#endif
//LayerStart.cpp#include "LayerStart.h"#include "LayerGame.h"CCScene *LayerStart::scene(){    CCScene *scene = CCScene::create();    LayerStart *layer = LayerStart::create();    scene->addChild(layer);    return scene;}bool LayerStart::init(){    CCLayer::init();    CCMenuItem *easyItem = CCMenuItemFont::create("Easy", this, menu_selector(LayerStart::easy));    CCMenuItem *hardItem = CCMenuItemFont::create("Hard", this, menu_selector(LayerStart::hard));    CCMenuItem *veryHard = CCMenuItemFont::create("VeryHard", this, menu_selector(LayerStart::veryHard));    CCMenuItem *quietItem = CCMenuItemFont::create("Quit", this, menu_selector(LayerStart::quit));    CCMenu *menu = CCMenu::create(easyItem, hardItem, veryHard, quietItem, NULL);    menu->alignItemsVerticallyWithPadding(30);//建立四个选项    addChild(menu);    return true;}void  LayerStart::easy(CCObject *){    CCScene *scene = LayerGame::scene(EASY);    CCDirector::sharedDirector()->replaceScene(scene);}void  LayerStart::hard(CCObject *){    CCScene *scene = LayerGame::scene(HARD);    CCDirector::sharedDirector()->replaceScene(scene);}void  LayerStart::veryHard(CCObject *){    CCScene *scene = LayerGame::scene(VERYHARD);    CCDirector::sharedDirector()->replaceScene(scene);}void  LayerStart::quit(CCObject *){    exit(1);}

2,实现文字与白色方块的显示

//CardItem.h#ifndef __CardItem_H__#define __CardItem_H__#include"cocos2d.h"USING_NS_CC;class CardItem :public  CCSprite{public:    static CardItem *create(int idx);    bool init(int idx);    CCLabelTTF *ttf;//两个全局变量    CCSprite *bg;    CC_SYNTHESIZE(int,_index,Idx)    void showWhite();    void showText();};#endif
//CardItem.cpp#include "CardItem.h"CardItem *CardItem::create(int idx){    CardItem *pRet = new CardItem;    if (pRet&&pRet->init(idx))    {        pRet->autorelease();    }    else    {        delete  pRet;        pRet = NULL;    }    return pRet;}bool CardItem::init(int idx){    CCSprite::init();    setIdx(idx);//相当于_index=idx;    setContentSize(CCSizeMake(80, 80));//设置精灵的大小    setAnchorPoint(ccp(0, 0));    CCString *str = CCString::createWithFormat("%d", idx);//把int类型转换成str类型    ttf = CCLabelTTF::create(str->getCString(),"Courier New",50);    ttf->setPosition(ccp(40, 40));    this ->addChild(ttf);    //创建白色方块    bg = CCSprite::create();    bg->setTextureRect(CCRectMake(0, 0,60,60));    bg->setAnchorPoint(ccp(0, 0));    bg->setColor(ccc3(255, 255, 255));    this->addChild(bg);    return true;}void CardItem::showWhite(){    ttf->setVisible(false);    bg->setVisible(true);}void CardItem::showText(){    ttf->setVisible(true);    bg->setVisible(false);}

3,实现游戏

//LayerGame.h#ifndef __LayerGame_H__#define __LayerGame_H__#include"cocos2d.h"#include"vector"using namespace std;USING_NS_CC;class LayerGame :public  CCLayer{public:    static CCScene *scene(int degree);    static LayerGame *create(int degree);    bool init(int degree);    void getAllpoint();    void getAvailablePoint();    void addCard();    void showCardAllWhite();    CCPointArray *allPoints;//存储CCpoint    CCArray *allCards;//    vector<int>  vec;    CC_SYNTHESIZE(int, _degree,Degree);//等级//  int _degree;//  void setDegree(int degree)//  {//      _degree = degree;//  }//  int getDgree()//  {//      return _degree;//  }//CC_SYNTHESIZE 的方法    CC_SYNTHESIZE(int, _clickStrat, clickStrat);//鼠标点击    virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);//表示消息是否被传递};#endif
//LayerGame.cpp#include "LayerGame.h"#include"CardItem.h"#include"time.h"#include"stdlib.h"#include"LayerOver.h"//加音像需添加的头文件#include "SimpleAudioEngine.h"#include"cocos-ext.h"using namespace CocosDenshion;CCScene *LayerGame::scene(int degree){    CCScene *scene = CCScene::create();    LayerGame *layer = LayerGame::create(degree);    scene->addChild(layer);    return scene;}LayerGame*LayerGame::create(int degree){    LayerGame *pRet = new LayerGame;    if (pRet&&pRet->init(degree))    {        pRet->autorelease();    }    else    {        delete pRet;        pRet = NULL;    }    return pRet;}bool LayerGame::init(int degree){    CCLayer::init();    setDegree(degree);    setclickStrat(0);    getAllpoint();    getAvailablePoint();    addCard();    setTouchEnabled(true);//打开触摸开关和触摸方式    setTouchMode(kCCTouchesOneByOne);    SimpleAudioEngine::sharedEngine()->preloadEffect("click.wav");//  CardItem *item = CardItem::create(2);//  item->setPosition(ccp(300, 200));//  this->addChild(item);//把文字加进来//  item->showText();    return true;}void  LayerGame::getAllpoint(){    allPoints = CCPointArray::create(60);//创建60个点    allPoints->retain();//需要自己手动添加    for (int i = 0; i < 10; i++)    {        for (int j = 0; j < 6; j++)        {            allPoints->addControlPoint(ccp(80 * i, 80 * j));        }    }}void LayerGame::getAvailablePoint()//生成随机数{    srand(time(NULL)); //随机函数    while (1)    {        int idx = rand() % 60;        vector<int>::iterator itr = vec.begin();        for (; itr != vec.end(); ++itr)        {            if (*itr == idx)                break;        }        if (itr == vec.end())        {            vec.push_back(idx);            if (vec.size() == getDegree())                break;        }    }}void    LayerGame::addCard(){    allCards = CCArray::create();    allCards->retain();    for (int i = 0; i < getDegree(); i++)    {        CardItem *item = CardItem::create(i);//idx=i        item->setPosition((CCPoint)allPoints->getControlPointAtIndex(vec[i]));        addChild(item);        item->showText();        allCards->addObject(item);    }}bool LayerGame::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){    for (int i = 0; i < allCards->count(); i++)    {        CCPoint pt = pTouch->getLocation();        if (((CardItem*)allCards->objectAtIndex(i))->boundingBox().containsPoint(pt))//boundingBox().containsPoint(pt)判断鼠标位置        {            showCardAllWhite();            //加音效            SimpleAudioEngine::sharedEngine()->playEffect("click.wav");            if (getclickStrat() == ((CardItem*)allCards->objectAtIndex(i))->getIdx())//只有当前的触摸次数跟数字卡的序号相等,才能继续下去            {                ((CardItem*)allCards->objectAtIndex(i))->removeFromParentAndCleanup(true);//表示把sprite从屏幕上删除,并把它执行的动作也删除                allCards->removeObjectAtIndex(i);                if (allCards->count() == 0)                {                    CCScene *scene = LayerOver::scene(true);                    CCDirector::sharedDirector()->replaceScene(scene);                    CCLog("you win game");                }            }            else            {                CCScene *scene = LayerOver::scene(false);                CCDirector::sharedDirector()->replaceScene(scene);                CCLog("you lose game");            }            _clickStrat++;//鼠标时间进行++        }    }    return true;}void LayerGame::showCardAllWhite(){    CCObject *obj;    CCARRAY_FOREACH(allCards, obj)    {            CardItem *spr = (CardItem *)obj;            spr->showWhite();    }}

4,游戏结束界面

//LayerOver.h#ifndef __LayerOver_H__#define __LayerOver_H__#include"cocos2d.h"USING_NS_CC;class LayerOver :public  CCLayer{public:    static CCScene *scene(bool res);    static  LayerOver *create(bool res);    bool init(bool res);    void menuCallBack(CCObject *obj);};#endif
//LayerOver.cpp#include "LayerOver.h"#include"LayerStart.h"CCScene *LayerOver::scene(bool res){    CCScene *scene = CCScene::create();    LayerOver *layer = LayerOver::create(res);    scene->addChild(layer);    return scene;}LayerOver *LayerOver::create(bool res){    LayerOver *pRet = new LayerOver;    if (pRet&&pRet->init(res))    {        pRet->autorelease();    }    else    {        delete pRet;        pRet = NULL;    }    return pRet;}bool LayerOver::init(bool res){    CCLayer::init();    CCMenu *menu = CCMenu::create();    CCMenuItem *back = CCMenuItemFont::create("back", this, menu_selector(LayerOver::menuCallBack));    if (res==true)    {        CCMenuItem *winItem = CCMenuItemFont::create("you win");        menu->addChild(winItem );        menu->addChild(back);    }    else    {        CCMenuItem *failItem = CCMenuItemFont::create("you lose");        menu->addChild(failItem);        menu->addChild(back);    }    addChild(menu);    menu->alignItemsVerticallyWithPadding(30);    return true;}void LayerOver::menuCallBack(CCObject *obj){    CCScene *scene = LayerStart::scene();    CCDirector::sharedDirector()->replaceScene(scene);}

三,生成SDK导入到安卓手机
(1)需要解压下载以下文件

这里写图片描述
这里写图片描述
//此段为转载复制
1.安装Java
做过安卓应用开发的同学应该知道安卓系统的最上层是用Java编制的一套API,所以一般的安卓应用开发是在Java环境下的。而Java作为一种优秀的跨平台高级语言,它的一大特色就是需要Java虚拟机的支持。
所以我们的第一步就从能让Java跑起来的JAR开始说起。
网上有很多教程叫我们安装JDK(Java Development Kit),即Java开发包,其中包含一些函数库和编译程序等。其实不用这样,最新的Eclipse中已经集成了JDK,所以我们只需要安装一个JRE(Java Runtime Environment),即Java运行环境,就可以了!至于Eclipse,不要急,稍后你就会看到了。

安装JRE非常简单,进入官网 www.java.com/zh_CN/之后(你也可以百度“JAVA”,第一个的官网就是了),你就能很显眼地看到“免费JAVA下载”的按钮了,点击,然后系统会自动给你找到适合你的JAVA,下载就可以了。
下载之后的安装和你平时安装软件是一样样的。
等Java安装完之后,我们第一步工作也就做好啦!
2.获得Android SDK(Software Development Kit)
Android SDK是官网提供给我们的安卓专用开发者工具包,里面包含了安卓定制的Eclipse、ADT(AndroidDeveloper Tools)集、Android SDK工具、Android 平台通用工具以及最新的安卓平台版本(我这里目前的版本是4.4.2,你也可以通过里面的SDK Manager下载其他版本的安卓来使用)。
注意这里面包含了安卓定制的Eclipse!
Eclipse是一个开源的、可扩展的基于Java的集成开发平台。以前做过Java开发的同学可能用过这个东西。网上有些教程就是基于原版的Eclipse,然后一步步添加诸如ADT的安卓开发插件,最终搭建起这个开发平台的。
现在我告诉你:不用这样!安卓官网SDK里面自带定制好的Eclipse,你只要下载SDK,解压,拿里面的Eclipse出来就可以直接开发通常的安卓应用了!

具体的下载地址是: http://developer.android.com/sdk/index.html,进去之后就可以看到“Download the SDK”的按钮了。点击,阅读(你确定?)并同意相关条款,然后选择适合你机型的版本(我的是Windows7 32位系统,所以选择 32bit),下载就可以了。我直接下载到了D盘根目录下,你可以下载到任何你喜欢的位置。下载之后直接解压就可以了。

3.获取Android NDK
前面的CDT是为了让Eclipse支持C的,但是CDT只是给了我们诸如项目管理、语法着色以及集成调试等写代码的功能,真正要把写好的C代码编译、链接并打包,单靠它还是不够的。这是我们需要NDK来帮助我们完成这些内容。
网上很多的教程中提到了 Cygwin ,这是一个在windows平台上运行的类UNIX模拟环境。用这个的原因好像是我们写好的C++代码在编译时用到了UNIX的bash工具等。不过Cygwin的安装和相关配置极其繁琐,非我等菜鸟所能驾驭。
好消息是,最新版的NDK里面已经集成了bash相关的功能,也就是说即使不用Cygwin,我们也可以编译我们的C++代码了!所以,让Cygwin这种过时的东西见鬼去吧!
下载准备好所有东西后,开始进行移植(安装好JAVA,添加adt-bundle-windows-x86-20140624和android-ndk-r9d到同一个文件夹下)
(1)打开\adt-bundle-windows-x86-20140624\eclipse

这里写图片描述
下一步
这里写图片描述
选择工程的proj.android加载进来
下一步提示
Error:Program “bash”not found in PATH
(2)安装cygin
第一步 选择本地安装
这里写图片描述
第二步 选中install
这里写图片描述
第三步 配置环境变量
将Cygwin加载系统路径或eclipset本地路径中,解决bash找不到的问题。打开windows->preference,看到如下对话框这里写图片描述
点击add
这里写图片描述
再次运行,提示NDK_ROOT无
配置如下:这里写图片描述

再次运行, android makfile 提示有错误
这里写图片描述
修改card /jni/Android 中的内容如下:(注意不能有多余的空格)
这里写图片描述
再次运行,提示报错
加载cocos2dx工程
这里写图片描述

为C:\cocos2d-x-2.2.6\cocos2dx\platform\android\java,加载进来
运行一下移植成功
这里写图片描述
出现这个界面,代表移植成功!!!,无须再安装虚拟机,
直接在card 目录下找到bin /res文件下card.apk文件就是

这里写图片描述
把此文件复制到自己的手机上点击安装,就可以开心的玩自己做的小游戏啦。到此,第一个小游戏结束,接下来进行改进。
四.游戏效果图
游戏打开时界面
这里写图片描述

开始游戏,先进行记忆,然后从0开始点击
这里写图片描述

这里写图片描述
游戏结束,可以返回主界面
这里写图片描述
五,修改app图标等
1.修改程序名:打开proj.android\res\values下,string.xml

原创粉丝点击