void GameScene::makeBlock() {
	m_blocks = new CCArray;

	float width = g_visibleSize.width / 16.0;
	float height = width * 0.3;
	float margin = (g_visibleSize.width - (width * BLOCK_COLUMN))
			/ (BLOCK_COLUMN + 1);
//    CCLOG("block.size: %f, margin: %f",width, margin);

	BlockSprite *block = NULL;

	int number = 0;
	int y = g_visibleSize.height * 0.55;

	for (int i = 0; i < BLOCK_ROW; i++) {
		int x = 0;
		for (int j = 0; j < BLOCK_COLUMN; j++) {
			block = BlockSprite::createWithBlockSize(width, height, number++);
			block->setPosition(
					GHelper::convI720toCC(x + block->getContentSize().width / 2,
							y + block->getContentSize().height / 2));

			this->addChild(block);
			m_blocks->addObject(block);

			x += block->getContentSize().width + margin;
		}
		y -= block->getContentSize().height + margin;
	}
}
Esempio n. 2
0
// コマを表示させる
void Game::showBlock()
{
    // 8 × 8 のコマを作成する
    for (int x = 0; x < MAX_BLOCK_X; x++)
    {
        for (int y = 0; y < MAX_BLOCK_Y; y++)
        {
            // ランダムでコマを作成
            kBlock blockType = (kBlock)(rand() % kBlockCount);
            // 対応するタグを取得
            int tag = getTag(x, y);
            // コマ配列にタグを追加
            m_blockTags[blockType].push_back(tag);
            // コマを作成
            BlockSprite* pBlock = BlockSprite::createWithBlockType(blockType);
            // コマの位置を設定
            pBlock->setPosition(getPosition(x, y));
            // コマを背景のスプライトに組み込み
            m_background->addChild(pBlock,kZOrderBlock, tag);
        }
    }
}
Esempio n. 3
0
void GameScene::createBlock()
{
    CCLOG("createBlock");
    int tag = kTagBaseBlock;
    for (int x = 0; x < kMaxBlockLeft; x++)
    {
        vector<BlockSprite*> blocks;
        for (int y = 0; y < kMaxBlockTop; y++)
        {
            kBlock blockType = (kBlock)(rand() % kBlockCount);
            BlockSprite* block = BlockSprite::create(tag, blockType, kStatusNormal);
            block->setPosition(getPosition(x, y));
            background->addChild(block, kZOrderBlock, tag);
            blocks.push_back(block);
            
            tag++;
        }
        blockFields.push_back(blocks);
    }
    
    blockAreaStartPoint = getPosition(0, 0);
    blockAreaEndPoint   = getPosition(kMaxBlockLeft-1, kMaxBlockTop-1);
}
Esempio n. 4
0
BlockSprite* BlockSprite::createBlock(int type, int index, Vec2 position)
{
    BlockSprite *block = new (std::nothrow) BlockSprite();
    
    if (block && block->init())
    {
        block->setType(type);
        block->setIndex(index);
        block->setPosition(position);
        block->autorelease();
        return block;
    }
    CC_SAFE_DELETE(block);
    return nullptr;
    
}
Esempio n. 5
0
void GameScene::initVariables() {
  srand((unsigned)time(NULL));

  BlockSprite* pBlock = BlockSprite::createWithBlockType(kBlockRed);
  m_blockSize= pBlock->getContentSize().height;
}
Esempio n. 6
0
// ラベルの初期表示
void Game::showLabel()
{
    Size bgSize = m_background->getContentSize();
    
    // 残数表示
    // ラベルのタグ
    int tagsForLabel[] = {kTagRedLabel, kTagBlueLabel, kTagYellowLabel, kTagGreenLabel, kTagGrayLabel};
    // フォントファイル
    const char* fontNames[] = {FONT_RED, FONT_BLUE, FONT_YELLOW, FONT_GREEN, FONT_GRAY};
    // 表示位置(高さ)
    float heightRate[] = {0.61, 0.50, 0.39, 0.28, 0.17};

    // コマ種類のループ
    vector<kBlock>::iterator it = blockTypes.begin();
    while (it != blockTypes.end()) {
        // コマ残数表示
        // コマのタグを種類毎に保持している配列のサイズを取得
        int count = (int)m_blockTags[*it].size();
        // コマ残数をstring型にする config.hで定義済み
        const char* countStr = ccsf("%02d", count);

        // ラベルのタグよりインスタンスを取得 (アプリ起動直後はない)
        Label* label = (Label*)m_background->getChildByTag(tagsForLabel[*it]);
        
        // タグが取得できない場合true (アプリ起動直後)
        if (!label)
        {
            // 起動直後に通る

            // 画像のタグよりインスタンスを取得
            kBlock blockType = (kBlock)(*it);
            BlockSprite* blockSprite = (BlockSprite*)m_background->getChildByTag(blockType);
            // スプライト(図形や画像)を作成(画像などを指定)
            auto sprite = Sprite::create(blockSprite->getBlockImageFileName(blockType));
            sprite->setPosition(Point(bgSize.width * 0.74, bgSize.height * heightRate[*it]));
            // 画像を背景のスプライトに組み込み
            m_background->addChild(sprite,kZOrderLabel, blockType);

            
            
            
            // コマ残数生成 ラベル作成
            label = Label::createWithBMFont(fontNames[*it], countStr);
            label->setPosition(Point(bgSize.width * 0.8, bgSize.height * heightRate[*it]));
            m_background->addChild(label, kZOrderLabel, tagsForLabel[*it]);
            
        }
        else
        {
            // 文字列の更新
            label->setString(countStr);
        }
        it++;
    }
    // スコアを表示
    // スコアのstringを取得
    const char* scoreStr = ccsf("%02d", m_score);
    // ラベルのタグよりインスタンスを取得
    Label* scoreLabel = (Label*)m_background->getChildByTag(kTagScoreLabel);
    if (!scoreLabel) {
        // スコアラベル生成
        scoreLabel = Label::createWithBMFont(FONT_WHITE, scoreStr);
        // 場所決め
        scoreLabel->setPosition(Point(bgSize.width * 0.78, bgSize.height * 0.75));
        // 配置
        m_background->addChild(scoreLabel,kZOrderLabel,kTagScoreLabel);
    }
    else
    {
        // string型のスコアを変更
        scoreLabel->setString(scoreStr);
    }
    
}