Ejemplo n.º 1
0
void RS_Main::blendImage()
{
    m_nCorrentCnt = 0;

    // 상단 문제부분 이미지 섞기
    int* pRand = new int[m_nImgCount];
    GameUtil::Rand(pRand, m_nImgCount);

    RS_Block* pBlock = NULL;

    for(unsigned int i=0; i<m_arrImgQ.count(); i++) {
        pBlock = (RS_Block*)m_arrImgQ.objectAtIndex(i);

        int base = pRand[i];
        pBlock->setPosition(ccp(m_ptCorrect[base].x, m_ptCorrect[base].y));
        pBlock->setOpacity(255);
        pBlock->m_bEnd = false;
    }

    delete []pRand;

    // 하단 정답부분 Clear
    RS_Blank* pBlank = NULL;
    for(unsigned int k=0; k<m_arrImgA.count(); k++) {
        pBlank = (RS_Blank*)m_arrImgA.objectAtIndex(k);
        pBlank->m_bEnd = false;

        // 맞춘 이미지가 있다면 삭제
        if (pBlank->m_pSprite) {
            pBlank->removeChild(pBlank->m_pSprite, true);
            pBlank->m_pSprite = NULL;
        }
    }

    // 각 스크롤뷰 위치 Reset
    m_scrollVQ->setContentOffset(ccp(0, 0));
    m_scrollVA->setContentOffset(ccp(0, 0));

    // 배경음 Stop
    if (CocosDenshion::SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying())
        CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true);

    // 배경음 Play
    CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic(m_szBGM, true);
}
Ejemplo n.º 2
0
bool RS_Main::CreateQuestion()
{
    bool bRet = false;

    do
    {
        // Answer영역 CCScrollView
        m_scrollVQ = CCScrollView::create();

        // Answer영역 ScrollView에 스프라이트 생성
        char szFile[260];

        // xml에서 읽어온 값 사용
        m_nImgCount = m_nGameImgCnt;

        RS_Block* pBlock = NULL;

        int* pRand = new int[m_nImgCount];
        GameUtil::Rand(pRand, m_nImgCount);

        CCRect rcBB;	// 블럭의 크기를 저장
        float fPosX;
        int index;

        for (int i=0; i<m_nImgCount; i++) {

            index = pRand[i];

            sprintf(szFile, "eBook/%02d/rememberStory/lv%d_%02d.png", m_nCurEBookPage, m_nGameLevel, index+1);

            // 블럭이미지로 쓸 이미지 로딩.
            CCTexture2D * pBlockTexture = CCTextureCache::sharedTextureCache()->addImage(szFile);
            pBlock = RS_Block::BlockWithTexture(pBlockTexture, index+1, this);
            rcBB = pBlock->boundingBox();

            // 레이어에서의 위치 지정 (anchor point 감안, Margin 추가)
            fPosX = SC_MARGIN_LQ + i* (rcBB.size.width + SCROLL_ITEM_GAP_Q);
            pBlock->setPosition(ccp(fPosX, 0));

            m_scrollVQ->addChild(pBlock, 0);
            m_arrImgQ.addObject(pBlock);

            // 생성한 블럭의 위치를 저장해둔다. 추후 섞을때 이용
            m_ptCorrect[i].x = pBlock->getPositionX();
            m_ptCorrect[i].y = pBlock->getPositionY();
        }

        delete []pRand;

        if (m_arrImgQ.count() == 0) {
            bRet = false;
            break;
        }

        int nWidth = SC_MARGIN_LQ + m_arrImgQ.count() * (rcBB.size.width + SCROLL_ITEM_GAP_Q) - SCROLL_ITEM_GAP_Q + SC_MARGIN_RQ;
        int nHeight = rcBB.size.height;

        CCLog("CreateQuestion. block width[%f]", rcBB.size.width);
        CCLog("CreateQuestion. block height[%f]", rcBB.size.height);

        m_scrollVQ->setContentSize(CCSizeMake(nWidth, nHeight));// 스크롤뷰에 포함할 레이어 크기
        m_scrollVQ->setContentOffset(CCPointZero);
        m_scrollVQ->setDirection(kCCScrollViewDirectionHorizontal);	// 스크롤 방향
        m_scrollVQ->setDelegate(this);
        m_scrollVQ->setPosition(ccp(0, SC_MARGIN_BA + BLANK_HEIGHT + SC_MARGIN_BQ));	// 표시할 위치 (무조건 지정좌표에 좌하단이 위치한다.)
        m_scrollVQ->setViewSize(CCSizeMake(s.width, nHeight));		// 보이는 영역크기

        this->addChild(m_scrollVQ, 2);

        bRet = true;
    }
    while(0);

    return bRet;

}