日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1.cocos2dx记忆卡片游戏代码、并将游戏移植到“华为荣耀”手机上、移植中的问题总结

發(fā)布時(shí)間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.cocos2dx记忆卡片游戏代码、并将游戏移植到“华为荣耀”手机上、移植中的问题总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


1記憶卡片游戲代碼

CardItem.h

#pragmaonce

#ifndef__CardItem_H__

#define__CardItem_H__

?

#include"cocos2d.h"

USING_NS_CC;

?

classCardItem :publicCCSprite

{

public:

???staticCardItem *create(intidx);

???boolinit(intidx);

?

???CCLabelTTF *ttf;

???CCSprite *bg;

???CC_SYNTHESIZE(int,_index,Idx);

?

???voidshowWhite();

???voidshowText();

};

?

#endif

CardItem.cpp

#include"CardItem.h"

?

CardItem *CardItem::create(intidx)

{

???CardItem *pRet =newCardItem;

???if (pRet &&pRet->init(idx))

???{

???????pRet->autorelease();

???}

???else

???{

???????deletepRet;

???????pRet =NULL;

???}

???returnpRet;

}

?

boolCardItem::init(intidx)

{

???CCSprite::init();

???setIdx(idx);

?

???setContentSize(CCSizeMake(80,80));

???setAnchorPoint(ccp(0,0));

?

???//設(shè)置字體

???CCString *str =CCString::createWithFormat("%d",idx);

???ttf =CCLabelTTF::create(str->getCString(),"Courier New", 50);

???ttf->setPosition(ccp(40, 40));

???this->addChild(ttf);

?

???bg =CCSprite::create();

???bg->setTextureRect(CCRectMake(0,0,77,77));

???bg->setAnchorPoint(ccp(0,0));

???bg->setColor(ccc3(255,255,255));

???this->addChild(bg);

?

???returntrue;

}

?

voidCardItem::showWhite()

{

???ttf->setVisible(false);

???bg->setVisible(true);

}

?

voidCardItem::showText()

{

???ttf->setVisible(true);

???bg->setVisible(false);

}

LayerGame.h

#ifndef__LayerGame_H__

#define__LayerGame_H__

?

#include"cocos2d.h"

#include"vector"

usingnamespacestd;

USING_NS_CC;

?

classLayerGame :publicCCLayer

{

public:

???staticCCScene *scene(intdegree);

???staticLayerGame *create(intdegree);

???boolinit(intdegree);

?

???voidgetAllPoint();

???voidgetAvailablePoint();

???voidaddCard();

???voidshowCardAllWhite();

?

???CCPointArray *allPoints;

???CCArray?????*allCards;

???vector<int>vec;

?

???CC_SYNTHESIZE(int,_degere, Degree);

???CC_SYNTHESIZE(int,_clickStart, ClickStart);

?

???virtualboolccTouchBegan(CCTouch *pTouch,CCEvent *pEvent);

};

?

#endif

LayerGame.cpp

#include"LayerGame.h"

#include"CardItem.h"

#include"stdlib.h"

#include"time.h"

#include"LayerOver.h"

#include"cocos-ext.h"?//支持聲音的

#include"SimpleAudioEngine.h"

usingnamespace?CocosDenshion;

USING_NS_CC_EXT;???????//放開擴(kuò)展庫

?

CCScene *LayerGame::scene(intdegree)

{

???CCScene *scene =CCScene::create();

???LayerGame *layer =LayerGame::create(degree);

???scene->addChild(layer);

???returnscene;

}

?

LayerGame *LayerGame::create(intdegree)

{

???LayerGame *pRet =newLayerGame;

???if (pRet &&pRet->init(degree))

???{

???????pRet->autorelease();

???}

???else

???{

???????deletepRet;

???????pRet =NULL;

???}

???returnpRet;

}

?

boolLayerGame::init(intdegree)

{

???CCLayer::init();

?

???setDegree(degree);

???setClickStart(0);

???getAllPoint();

???getAvailablePoint();

???addCard();

?

???setTouchEnabled(true);

???setTouchMode(kCCTouchesOneByOne);

?

???SimpleAudioEngine::sharedEngine()->preloadEffect("boom.mp3");

?

???returntrue;

}

?

voidLayerGame::getAllPoint()

{

???allPoints =CCPointArray::create(60);

???allPoints->retain();

???for (inti = 0;i < 10;i++)

???{

???????for (intj = 0;j < 6;j++)

???????{

???????????allPoints->addControlPoint(ccp(80 * i,80 *j));

???????}

???}

}

?

//獲得要作為游戲點(diǎn)的point

voidLayerGame::getAvailablePoint()

{

???srand(time(NULL));

???while (1)

???{

???????intidx =rand() % 60;

???????vector<int>::iteratoritr =vec.begin();

???????for (;itr !=vec.end(); ++itr)

???????{

???????????if (*itr ==idx)

???????????????break;

???????}

???????if (itr ==vec.end())

???????{

???????????vec.push_back(idx);

???????????if (vec.size() == getDegree())

???????????????break;

???????}

???}

}

?

voidLayerGame::addCard()

{

???allCards =CCArray::create();

???allCards->retain();

???for (inti = 0;i <getDegree();i++)

???{

???????CardItem *item =CardItem::create(i);

???????item->setPosition((CCPoint)allPoints->getControlPointAtIndex(vec[i]));

???????addChild(item);

???????item->showText();

???????allCards->addObject(item);

???}

}

?

voidLayerGame::showCardAllWhite()

{

???CCObject *obj;

???CCARRAY_FOREACH(allCards,obj)

???{

???????CardItem *spr = (CardItem *)obj;

???????spr->showWhite();

???}

}

?

boolLayerGame::ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent)

{

???for (inti = 0;i <allCards->count();i++)

???{

???????//判斷是否點(diǎn)中

???????if (((CardItem*)allCards->objectAtIndex(i))->boundingBox().

???????????containsPoint(pTouch->getLocation()))

???????{

???????????showCardAllWhite();

???????????SimpleAudioEngine::sharedEngine()->playEffect("boom.mp3");

???????????if (getClickStart() == ((CardItem*)allCards->objectAtIndex(i))->getIdx())

???????????{

??????????????((CardItem*)allCards->objectAtIndex(i))->removeFromParentAndCleanup(true);

???????????????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");

???????????}

???????????_clickStart++;

???????}

???}

???returntrue;

}

LayerOver.h

#ifndef__LayerOver_H__

#define__LayerOver_H__

?

?

#include"cocos2d.h"

USING_NS_CC;

?

?

classLayerOver :publicCCLayer

{

public:

???staticCCScene *scene(boolres);

???staticLayerOver?*create(boolres);

???boolinit(boolres);

?

???voidmenuCallBack(CCObject * obj);

};

?

#endif

LayerOver.cpp

#include"LayerOver.h"

#include"LayerStart.h"

?

?

CCScene *LayerOver::scene(boolres)

{

???CCScene *scene =CCScene::create();

???LayerOver *layer =LayerOver::create(res);

???scene->addChild(layer);

???returnscene;

}

LayerOver?*LayerOver::create(boolres)

{

???LayerOver *pRet =newLayerOver();

???if (pRet &&pRet->init(res))

???{

???????pRet->autorelease();

???}

???else

???{

???????deletepRet;

???????pRet =NULL;

???}

???returnpRet;

}

boolLayerOver::init(boolres)

{

???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 Failed");

???????menu->addChild(failItem);

???????menu->addChild(back);

???}

?

???addChild(menu);

???menu->alignItemsVerticallyWithPadding(30);

?

?

???returntrue;

}

?

?

voidLayerOver::menuCallBack(CCObject *obj)

{

???CCScene *scene =LayerStart::scene();

???CCDirector::sharedDirector()->replaceScene(scene);

}

LayerStart.h

#ifndef__LayerStart_H__

#define__LayerStart_H__

?

#include"cocos2d.h"

USING_NS_CC;

classLayerStart :publicCCLayer

{

public:

???CREATE_FUNC(LayerStart);

???staticCCScene *scene();

???boolinit();

?

???voideasy(CCObject * obj);

???voidhard(CCObject * obj);

???voidveryHard(CCObject * obj);

???voidquit(CCObject * obj);

?

???enumDEGREE

???{

???????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);

???returnscene;

}

?

boolLayerStart::init()

{

???CCLayer::init();

???CCMenuItem *easyItem =CCMenuItemFont::create("Easy",this,

???????menu_selector(LayerStart::easy));

???CCMenuItem *hardItem =CCMenuItemFont::create("Hard",this,

???????menu_selector(LayerStart::hard));

???CCMenuItem *veryHardItem =CCMenuItemFont::create("VeryHard",

???????this,menu_selector(LayerStart::veryHard));

???CCMenuItem *quitItem =CCMenuItemFont::create("Quit",this,

???????menu_selector(LayerStart::quit));

?

???CCMenu *menu =CCMenu::create(easyItem,hardItem,veryHardItem,quitItem,NULL);

?

???menu->alignItemsVerticallyWithPadding(30);

???addChild(menu);

?

???returntrue;

}

?

voidLayerStart::easy(CCObject * obj)

{

???CCScene *scene =LayerGame::scene(EASY);

???CCDirector::sharedDirector()->replaceScene(scene);

}

?

voidLayerStart::hard(CCObject * obj)

{

???CCScene *scene =LayerGame::scene(HARD);

???CCDirector::sharedDirector()->replaceScene(scene);

}

?

voidLayerStart::veryHard(CCObject * obj)

{

???CCScene *scene =LayerGame::scene(VERYHARD);

???CCDirector::sharedDirector()->replaceScene(scene);

}

?

voidLayerStart::quit(CCObject * obj) {

???exit(1);

}

運(yùn)行結(jié)果:

點(diǎn)擊進(jìn)入Easy后的效果:

失敗后的效果:

2記憶卡片手機(jī)移植

環(huán)境準(zhǔn)備:所需軟件:

32位:

64

軟件安裝(注意不要有中文目錄)

1.??????安裝JDK

jdk-7u25-windows-i586.exe

2.??????安裝安卓SDK

3.??????安裝安裝NDK

4.??????打開(F:\TransPlant\adt-bundle-windows-x86-20140321\eclipse\eclipse.exe):

效果圖如下:

game游戲項(xiàng)目導(dǎo)入,導(dǎo)入錄入路徑:E:\Installed\cocos2d-x-2.2.3\projects\game\proj.android

點(diǎn)擊:File -- >Import

運(yùn)行結(jié)果:

?

5安裝cygin,從官網(wǎng)(http://cygwin.com/install.html)上下載cygwin.

下載后軟件:

A雙擊上面的64位或者32位的軟件進(jìn)行安裝。這里選擇64位進(jìn)行安裝。

配置cygwin.

A修改:cygwin64\etc中的fstab,將最后一行注釋掉,而換成如下的配置:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

?

左面cygwin的運(yùn)行效果圖如下:

6配置環(huán)境變量

Cygwin加載系統(tǒng)路徑到Eclipse本地路徑中。解決bash找不到的問題,打開Eclipse->windows-preference看到如下配置:

7?修改Androidmakefile

8配置項(xiàng)目中的build_native.sh文件,加上:

chmod 777 "$APP_ANDROID_ROOT"/assets -R

9導(dǎo)入cocos2dx的另外一個(gè)Android應(yīng)用,只有這樣才能讓本項(xiàng)目運(yùn)行起來

加載路徑是:E:\Installed\cocos2d-x-2.2.3\cocos2dx\platform\android\java

點(diǎn)擊確定。導(dǎo)入后的截圖:

?

8?將游戲移植到手機(jī),將手機(jī)USB線接上電腦(注意,不要使用Android模擬器進(jìn)行運(yùn)行,cocos2dxAndroid模擬器上運(yùn)行由問題)。

右擊game項(xiàng)目Android項(xiàng)目進(jìn)行run(這里以華為榮耀作為測(cè)試機(jī))。

運(yùn)行效果:

從下面game即使移植到華為榮耀手機(jī)上的cocos2d-x記憶卡片游戲


打開bin,拷貝bak文件即可用:



7?橫屏、豎屏設(shè)置

androidAndroidManifest.xml文件中:

screenOrientation="landscape"為橫屏,

screenOrientation="portrait"為豎屏

?

移植錯(cuò)誤總結(jié):

[2014-10-23 17:11:41 - myhello] Unable to resolve target 'android-8'

[2014-10-23 17:24:58 - libcocos2dx] Unable to resolve target 'android-8'

[2014-10-23 17:33:15 - SDK Manager] Created AVD 'AVD19' based on Android 4.4.2, ARM (armeabi-v7a) processor,

[2014-10-23 17:33:15 - SDK Manager] with the following hardware config:

[2014-10-23 17:33:15 - SDK Manager] disk.dataPartition.size=200M

[2014-10-23 17:33:15 - SDK Manager] hw.accelerometer=yes

[2014-10-23 17:33:15 - SDK Manager] hw.audioInput=yes

[2014-10-23 17:33:15 - SDK Manager] hw.battery=yes

[2014-10-23 17:33:15 - SDK Manager] hw.camera.back=none

[2014-10-23 17:33:15 - SDK Manager] hw.dPad=no

[2014-10-23 17:33:15 - SDK Manager] hw.device.hash2=MD5:b1157894a81a9869f18a16ee4591a709

[2014-10-23 17:33:15 - SDK Manager] hw.device.manufacturer=Generic

[2014-10-23 17:33:15 - SDK Manager] hw.device.name=3.2in HVGA slider (ADP1)

[2014-10-23 17:33:15 - SDK Manager] hw.gps=yes

[2014-10-23 17:33:15 - SDK Manager] hw.keyboard=yes

[2014-10-23 17:33:15 - SDK Manager] hw.keyboard.lid=yes

[2014-10-23 17:33:15 - SDK Manager] hw.lcd.density=160

[2014-10-23 17:33:15 - SDK Manager] hw.mainKeys=yes

[2014-10-23 17:33:15 - SDK Manager] hw.ramSize=512

[2014-10-23 17:33:15 - SDK Manager] hw.sdCard=yes

[2014-10-23 17:33:15 - SDK Manager] hw.sensors.orientation=yes

[2014-10-23 17:33:15 - SDK Manager] hw.sensors.proximity=yes

[2014-10-23 17:33:15 - SDK Manager] hw.trackBall=no

[2014-10-23 17:33:15 - SDK Manager] skin.dynamic=no

[2014-10-23 17:33:15 - SDK Manager] vm.heapSize=16

[2014-10-23 17:35:56 - myhello]????(skipping file '.gitignore' due to ANDROID_AAPT_IGNORE pattern '.*')

[2014-10-23 17:35:56 - myhello]??????Unable to add 'F:\cocos2d-x-2.2.3\cocos2d-x-2.2.3\projects\myhello\proj.android\assets\CloseNormal.png': Zip add failed

[2014-10-23 17:35:56 - myhello] ERROR: unable to process assets while packaging 'F:\cocos2d-x-2.2.3\cocos2d-x-2.2.3\projects\myhello\proj.android\bin\resources.ap_'

[2014-10-23 17:35:56 - myhello] ERROR: packaging of 'F:\cocos2d-x-2.2.3\cocos2d-x-2.2.3\projects\myhello\proj.android\bin\resources.ap_' failed

?

上面的錯(cuò)誤原因是:

要修改:cygwin64\etc中的fstab,將最后一行注釋掉,而換成如下的配置:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

其它問題:略

?



總結(jié)

以上是生活随笔為你收集整理的1.cocos2dx记忆卡片游戏代码、并将游戏移植到“华为荣耀”手机上、移植中的问题总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。