翻白块代码

来源:互联网 发布:吉他特殊调音软件 编辑:程序博客网 时间:2024/04/28 14:11

在AppDelegate.cpp文件中

pEGLView->setDesignResolutionSize(800, 480, kResolutionExactFit);

说明本次设计屏幕大小,以及设置自适应屏幕大小

LayerStart.cpp主要是添加游戏开始界面,以及点击菜单后能跳到相应的scene中

#include "LayerStart.h"#include "LayerGame.h"CCScene * LayerStart::ccScene(){    CCScene * ccsence = CCScene::create();    LayerStart * layerstart = LayerStart::create();    ccsence->addChild(layerstart);    return ccsence;}bool LayerStart::init(){    CCLayer::init();    CCMenuItem* easyItem = CCMenuItemFont::create("easy", this,        menu_selector(LayerStart::easy));    CCMenuItem * generalItem = CCMenuItemFont::create("general", this,        menu_selector(LayerStart::general));    CCMenuItem * hardItem = CCMenuItemFont::create("hard", this,         menu_selector(LayerStart::hard));    CCMenuItem * quitItem = CCMenuItemFont::create("quit", this,         menu_selector(LayerStart::quit));    CCMenu * ccmenu = CCMenu::create(easyItem, generalItem, hardItem, quitItem, NULL);    //ccmenu->alignItemsHorizontallyWithPadding(40);    ccmenu->alignItemsVerticallyWithPadding(20);    addChild(ccmenu);    return true;}void LayerStart::easy(CCObject * obj){    CCScene * cc = LayerGame::scene(EASY);    CCDirector::sharedDirector()->replaceScene(cc);}void LayerStart::general(CCObject * obj){    CCScene * cc = LayerGame::scene(GENERAL);    CCDirector::sharedDirector()->replaceScene(cc);}void LayerStart::hard(CCObject * obj){    CCScene * cc = LayerGame::scene(HARD);    CCDirector::sharedDirector()->replaceScene(cc);}void LayerStart::quit(CCObject * obj){    exit(1);}

cardItem主要是绘制card单元

#include "CardItem.h"CardItem * CardItem::create(int dex){    CardItem * cardItem = new CardItem();    if (cardItem && cardItem->init(dex))    {        cardItem->autorelease();    }    else    {        delete cardItem;        cardItem = NULL;    }    return cardItem;}bool CardItem::init(int dex){    CCSprite::init();    setdex(dex);//把白块的代码存下来    setContentSize(CCSizeMake(80, 80));//精灵大小为80.80    setAnchorPoint(ccp(0, 0));    CCString * ccstring = CCString::createWithFormat("%d", dex);//背景的数字    ttf = CCLabelTTF::create(ccstring->getCString(), "Courier New", 20);    ttf->setAnchorPoint(ccp(0,0));//设置锚点为0,0    ttf->setPosition(ccp(40, 40));    addChild(ttf);    bg = CCSprite::create();    bg->setTextureRect(CCRectMake(0, 0, 75, 75));//子精灵大小为75*75为了避免相邻的精灵连在一起    bg->setAnchorPoint(ccp(0, 0));//设置锚点为0,0    bg->setColor(ccc3(255, 0, 0));    addChild(bg);    return true;}void CardItem::showwhite()//设置白块可见,数字不可见{    ttf->setVisible(false);    bg->setVisible(true);}void CardItem::showText()//白块不可见{    ttf->setVisible(true);    bg->setVisible(false);}
#include "LayerGame.h"#include "CardItem.h"#include "time.h"#include "stdlib.h"#include "LayerOver.h"#include "SimpleAudioEngine.h"//包含这个头文件是因为后面要使用播放音乐,音乐的默认格式为wavusing namespace CocosDenshion; //同上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)//degree等级{    CCLayer::init();    setdegree(degree);    settouchPoint(0);    //CardItem * cardItem = CardItem::create(3);    //cardItem->setPosition(ccp(10, 10));    //addChild(cardItem);    getAllPoint();   //获得一共所有能够绘制小方块的个数,并且把点保存下来    getAvailablePoint();   //获得随机方块的位置    addCardItem();       //绘制方块    setTouchEnabled(true);    setTouchMode(kCCTouchesOneByOne);//触摸打开    return true;}bool LayerGame::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)//点击处理事件{    for (int i = 0; i < allcards->count();i++)    {        if (((CardItem*)allcards->objectAtIndex(i))->boundingBox()            .containsPoint(pTouch->getLocation()))        {            showAllBg();            if (((CardItem*)allcards->objectAtIndex(i)) ->getdex()==gettouchPoint())            {                SimpleAudioEngine::sharedEngine()->playEffect("click.wav");                ((CardItem*)allcards->objectAtIndex(i))->removeFromParentAndCleanup(true);                allcards->removeObjectAtIndex(i);                if (allcards->count()==0)                {                    CCScene * ccscene = LayerOver::ccscene(true);                    CCDirector::sharedDirector()->replaceScene(ccscene);                    CCLOG("VETORY");                }            }            else            {                CCLog("no");                CCScene * ccscene = LayerOver::ccscene(false);                CCDirector::sharedDirector()->replaceScene(ccscene);            }            _touchPoint++;        }    }    return true;}void LayerGame::showAllBg(){    CCObject *obj;    CCARRAY_FOREACH(allcards, obj)    {        ((CardItem *)obj)->showwhite();    }}void LayerGame::addCardItem()//根据等级添加item{    allcards = CCArray::create();    allcards->retain();//内存托管    for (int i = 0; i < getdegree();i++)    {        CardItem * card = CardItem::create(i);        card->setPosition(allPoint->getControlPointAtIndex(vec[i]));        addChild(card);        card->showText();        allcards->addObject(card);    }}CCScene * LayerGame::scene(int degree){    CCScene * ccscene = CCScene::create();    LayerGame * laygame = LayerGame::create(degree);    ccscene->addChild(laygame);    return ccscene;}void LayerGame::getAllPoint()//得到能够绘制方格的点的坐标{    allPoint = CCPointArray::create(60);    allPoint->retain();//内存托管,防止泄漏    for (int i = 0; i < 6;++i)    {        for (int j = 0; j < 10;++j)        {            allPoint->addControlPoint(ccp(j * 80, i* 80));//方格大小        }    }}//产生degree个方格的随机位置void  LayerGame::getAvailablePoint(){    srand(time(NULL));    while (1)    {        int randNumber = rand() % 60;        vector<int>::iterator ite = vec.begin();//遍历vector        for (; ite != vec.end();++ite)        {            if (randNumber == *ite)            {                break;            }        }        if (ite == vec.end())        {            vec.push_back(randNumber);            if (getdegree()==vec.size())            {                break;            }        }    }}
0 0