U8's AppLabo

swift,cocos2d-x,Unityを使ったiOSアプリ作成の備忘録

未分類

cocos2d-x でマインスイーパーを作ってみた 〜その4

投稿日:2016年10月8日 更新日:

地雷のかくされたパネルをタッチすると赤色、それ以外は灰色に変化する様にプログラムを修正する。

まずパネルに地雷が隠されているかどうかを設定するためにPanelクラスのpublicに
bool bombを追加。パネルに地雷が隠されていればbombの値をtrueにする。

class Panel:public cocos2d::Sprite{  
public: 
          :
          :
    bool bomb;   //追加
    
    CREATE_FUNC(Panel);
    
};

次にtouchEvent()を以下の様に修正

void Panel::touchEvent(){
    
    Color3B _color = Color3B::GRAY;

    if(bomb){
        _color =Color3B::RED;
    }
    
    this->setColor(_color);
      
}

まず地雷を生成する。
void GameScene::makeMap()を以下のコードに変更

void GameScene::makeMap(){
    //地雷を作成
    std::vector bombs;
    for (int i = 0; i< _cellLength * _cellLength; i++) {
        bool bomb = false;
        
        if (i<10) {
            bomb = true;
        }
        
        bombs.push_back(bomb);
        
    }

    for(int y = 0;y < _cellLength;y++){
        for(int x = 0;x < _cellLength;x++){ Rect _rect = Rect(0,0,80,80); //パネルの大きさ auto _panel = Panel::create(); _panel->setTextureRect(_rect);
            _panel->setColor(Color3B::WHITE);
            _panel->setPosition(45 +  82 * x,300 + 82 * y);
            _panel->setTag(x + _cellLength * y + 1);

            //地雷をセットする
            int _index = std::uniform_int_distribution(0,(int)bombs.size() - 1)(_mt);
            bool _bomb = bombs[_index];
            bombs.erase(bombs.begin() + _index);
            _panel->bomb = _bomb;
            
            this->addChild(_panel);
        }
        
    }
}

実行して、適当にパネルをタップ

tekitou

上記の様になり成功!!

しかし、このままでは地雷の位置が分からずゲームにならないので、次は地雷の位置を知るためのヒントを作成する。

フッターアド




フッターアド




-未分類
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

【cocos2d-x】現在の日時の取得方法( C++ )

cocos2d-xで年月日(曜日)と時間を取得するには以下の様に コードを書く。 time_t now = time(NULL); struct tm *today = localtime(& …

cocos2d-x でマインスイーパーを作ってみた 〜その1〜

cocos2d-xでマインスイーパを作成したので覚書き 完成画面はコレ   それではまずcocos2d-xで新規のプロジェクトを作成。 画面はiPhone7に合わせるので750×1334に固 …

cocos2d-x でマインスイーパーを作ってみた 〜その2

今日は画面上に白いパネル(width:80,height:80)を9×9個並べてみる。 void HelloWorld::onEnter(){ Layer::onEnter(); int _cellL …

no image

【cocos2d-x】 シングルトン

アプリを作成していると、複数のSceneやClassから一つのデータを参照したくなることが 多々あります。そんな時はシングルトンオブジェクトを作っておくととても便利です。 class MainData …

no image

【cocos2d-x】画像ファイルの必要ないSpriteの作成(c++)

アプリの作成をしていると、プレイスホルダーとしてSpriteを使用することがあるかとおもいます。 しかし単なるプレイスホルダーに画像ファイルを用意するのは面倒なので、rectからspriteを作成する …