#include"LayerGame.h" #include"CardItem.h" #include"stdlib.h" #include"time.h" #include"LayerOver.h" #include"cocos-ext.h"//支持声音的 #include"SimpleAudioEngine.h" usingnamespaceCocosDenshion; USING_NS_CC_EXT;//放开扩展库 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)); } } } //获得要作为游戏点的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++) { //判断是否点中 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; } |