【COCOS2D-X】ステータスを表示

数字は完全にランダムです。

ちょっとゲームらしくなってきたでしょ。

#ifndef PROJ_ANDROID_CHARACTER_H
#define PROJ_ANDROID_CHARACTER_H

#include "cocos2d.h"

class Character {
public:
    int Hp;
    int MaxHp;
    int Mp;
    int MaxMp;
    int Power;
    int Speed;
    int Magic;
public:
    Character();
    ~Character();
};


#endif //PROJ_ANDROID_CHARACTER_H
#include "Character.h"

Character::Character()
{
    MaxHp = cocos2d::random<int>(0, 100);
    MaxMp = cocos2d::random<int>(0, 100);
    Power = cocos2d::random<int>(0, 100);
    Speed = cocos2d::random<int>(0, 100);
    Magic = cocos2d::random<int>(0, 100);
}

Character::~Character()
{

}
#ifndef PROJ_ANDROID_GAMESTATUS_H
#define PROJ_ANDROID_GAMESTATUS_H

#include "cocos2d.h"
#include "Character.h"
#include <list>

class GameStatus {
private:
    static GameStatus *gameStatus;
public:
    std::list<Character*> *Charactors;
private:
    GameStatus();
    ~GameStatus();
public:
    static GameStatus* GetGameData();
    static void Destroy();
};


#endif //PROJ_ANDROID_GAMESTATUS_H
#include "GameStatus.h"

GameStatus *GameStatus::gameStatus = nullptr;

GameStatus::GameStatus()
{
    Charactors = new std::list<Character*>();
    for(int i = 0; i < 4; i++)
    {
        Character *character = new Character();
        Charactors->push_back(character);
    }
}

GameStatus::~GameStatus()
{
    for(Character *character = Charactors->front(); Charactors->empty() == true; character = Charactors->front())
    {
        delete character;
        Charactors->pop_front();
    }
    delete Charactors;
}

GameStatus * GameStatus::GetGameData()
{
    if(gameStatus == nullptr)
    {
        gameStatus = new GameStatus();
    }
    return gameStatus;
}

void GameStatus::Destroy()
{
    delete gameStatus;
}
    // ステータスウィンドウの配置
    auto xpos = (visibleSize.width - sprite->getContentSize().width * scaleRate) / 2.0;
    float windowScale = 0;
    float windowHeight = 0;

    Sprite *charaStatusWindow[4];
    auto chara = GameStatus::GetGameData()->Charactors->begin();
    for(int i = 0; i < 4; i++)
    {
        charaStatusWindow[i] = Sprite::create("btn02_03_s_bl.png");
        if (charaStatusWindow[i] == nullptr)
        {
            problemLoading("'btn02_03_s_bl.png'");
        }
        else
        {
            if(windowScale == 0 || windowHeight == 0)
            {
                windowHeight = charaStatusWindow[i]->getContentSize().height;
                windowScale = (visibleSize.height / 4) / windowHeight;
            }
            charaStatusWindow[i]->setPosition(Vec2(xpos + origin.x,origin.y + windowHeight * i * windowScale));
            charaStatusWindow[i]->setAnchorPoint(Vec2(0,0));
            charaStatusWindow[i]->setScale(windowScale);

            this->addChild(charaStatusWindow[i], 1);
        }

        auto offset = charaStatusWindow[i]->getContentSize().width / 10.0;
        auto hpLabel = Label::createWithTTF("Hello World", "fonts/msgothic.ttc", 12);
        if (hpLabel == nullptr)
        {
            problemLoading("'fonts/msgothic.ttc'");
        }
        else
        {
            hpLabel->setAnchorPoint(Vec2(0, 1));
            hpLabel->setPosition(Vec2(origin.x + xpos + offset, origin.y + windowHeight * (i + 1) * windowScale));

            this->addChild(hpLabel, 2);

            auto hpStr = String();
            hpStr.appendWithFormat("HP : %d", chara.operator*()->MaxHp);
            hpLabel->setString(hpStr.getCString());
        }

        auto MpLabel = Label::createWithTTF("Hello World", "fonts/msgothic.ttc", 12);
        if (MpLabel == nullptr)
        {
            problemLoading("'fonts/msgothic.ttc'");
        }
        else
        {
            MpLabel->setAnchorPoint(Vec2(0, 1));
            MpLabel->setPosition(Vec2(origin.x + xpos + offset, origin.y + windowHeight * (i + 1) * windowScale - hpLabel->getContentSize().height));

            this->addChild(MpLabel, 2);

            auto mpStr = String();
            mpStr.appendWithFormat("MP : %d", chara.operator*()->MaxMp);
            MpLabel->setString(mpStr.getCString());
        }
        chara++;
    }

ウインドウ周りのクラス設計もちゃんと考えないといけないね。

あと、C++のList型は、他のプログラムのList型の様に使用できなくて、ちょっとめんどい。

完全にイテレータパターンのクラスなので、少々扱いづらい。

慣れるしか無いんだけど。

あと、乱数はcocos-2dxに搭載されているものが使用できます。

C++標準の乱数よりも使いやすいです。

経済ニュース(12/05)

米国株、ダウ4日続伸し248ドル高、過去最高値 早期の経済対策期待で – 日本経済新聞

【NQNニューヨーク=横内理恵】4日の米株式市場でダウ工業株30種平均は4日続伸した。前日比248ドル74セント(0.8%)高の3万0218ドル26セントで終え、過去最高値を更新した。朝方発表の11月

高性能HV、重量税の優遇維持 政府・与党調整 – 日本経済新聞

日本経済新聞の電子版。日経や日経BPの提供する経済、企業、国際、政治、マーケット、情報・通信、社会など各分野のニュース。ビジネス、マネー、IT、スポーツ、住宅、キャリアなどの専門情報も満載。

水虫治療薬に睡眠導入剤の成分混入 メーカーが自主回収へ – NHK NEWS WEB

福井県の医薬品メーカーが製造した水虫などの治療薬に睡眠導入剤の成分が混入していることが分かり、メーカーが9万錠余りを自主…

住宅ローン減税、小規模物件は1000万円の所得制限 – 日本経済新聞

日本経済新聞の電子版。日経や日経BPの提供する経済、企業、国際、政治、マーケット、情報・通信、社会など各分野のニュース。ビジネス、マネー、IT、スポーツ、住宅、キャリアなどの専門情報も満載。

米失業率、11月は6.7% コロナ再拡大で回復鈍化 – 日本経済新聞

日本経済新聞の電子版。日経や日経BPの提供する経済、企業、国際、政治、マーケット、情報・通信、社会など各分野のニュース。ビジネス、マネー、IT、スポーツ、住宅、キャリアなどの専門情報も満載。

電話で「このままでは犯罪者になる」、中国人を狙った詐欺…22件計3740万円被害 – 読売新聞

大阪府警は4日、大阪市内に住む中国人留学生の女性(20歳代)が、中国の政府機関職員を名乗る人物から「このままでは犯罪者になる」とうその電話を受け、110万人民元(約1700万円)をだまし取られる被害に遭ったと発表した。

大飯原発「世界一厳しい」新規制基準揺らぐ 大阪地裁判決に原子力規制委ぼうぜん – 東京新聞

原発を動かしていいかを審査した原子力規制委員会に、司法がノーを突き付けた。4日の大阪地裁判決は、関西電力大飯原発3、4号機(福井県)で…

米雇用統計、11月の非農業部門雇用者数24.5万人増-失業率6.7% – ブルームバーグ

米国の非農業部門雇用者数(事業所調査、季節調整済み)は、11月に前月比24万5000人増加した。ブルームバーグがまとめたエコノミスト予想の中央値は46万人増だった。前月は61万人増(速報値63万8000人増)に下方修正された。

楽天が3~5ギガの低容量プラン検討 1000円台も – SankeiBiz

今年4月から携帯電話事業に本格参入している楽天が、データ通信量3~5ギガバイトで現行プランの半値となる千円台も視野に、低容量・低価格の新プラン創設を検討している…

JAL機着陸 重大インシデント – Yahoo!ニュース

4日午前、那覇空港を出発した羽田行きJAL904便の左エンジンに不具合が発生。同機は那覇空港に引き返し、約30分後に緊急着陸した。左エンジンは部品が大きく破損しており、国土交通省は大事故につながりかねない「重大インシデント」と認定。

ドコモの格安プラン「ahamo」、他キャリアとMVNOの反応は – ITmedia

NTTドコモが月間データ通信容量20GBの新プラン「ahamo」(アハモ)を月額2980円(税別、以下同)で2021年3月から提供すると発表した。こうした動きに対し、業界の各社はどんな反応を示したか。各社から得た回答をまとめた。

新型コロナ:パナソニック、大阪は在宅勤務 赤信号で企業対応急ぐ – 日本経済新聞

日本経済新聞の電子版。日経や日経BPの提供する経済、企業、国際、政治、マーケット、情報・通信、社会など各分野のニュース。ビジネス、マネー、IT、スポーツ、住宅、キャリアなどの専門情報も満載。

新型ノートが日産を救えるかもしれない、想像以上の完成度とは?(GQ JAPAN) – Yahoo!ニュース

フルモデルチェンジした日産のコンパクトカー「ノート」に小川フミオが試乗した。シリーズハイブリッドの「e-POWER」仕様のみになった新型の印象は?

【速報】三菱自動車トップが語った! 次代に挑むこれからの商品戦略 – ベストカーWeb

2020年12月4日、三菱が新型「エクリプスクロス」を発売した。そんな新型SUVを送り出した日に、注目すべき取材が行われた。それが自動車メディアを対象としたラウンドテーブルインタビューだ。そこで明かされた注目の情報を速報でお届けする。

ラディウス,税込約4200円前後のハイレゾ対応イヤホン「HP-NX10」を発売 – 4Gamer.net

2020年12月4日,ラディウスは,独自のスピーカードライバーを採用したハイレゾ対応アナログ接続型ワイヤードイヤホン「HP-NX10」を12月中に発売すると発表した。税込のメーカー想定売価は税込4180円前後となっている。

菅総理、マイナポイント延長やデジタル化推進を表明。ドコモ新プランは「節目」 – Impress Watch

菅義偉総理大臣は4日、記者会見を開き、新型コロナ対策やカーボンニュートラルへの取り組み、マイナポイントの延長などについて説明した。政策の核として、「グリーン」と「デジタル」を掲げ、積極的なデジタル化を推進する。

介護事業の倒産が最多に! 現場職員の心を折る入居者家族の「コロナよりひどい暴言」(2) – J-CASTニュース

新型コロナウイルス感染拡大の第3波が猛威を振るっているが、「老人福祉・介護事業」の倒産と、解散・休廃業が過去最多に達していることがわかった。東京商工リサーチが2020年12月3日、「2020年老人福祉・介護事業の倒産状況」の調査結果を発表した。老人福祉・介護事業は、以前から経営不振に陥っているところが多かったが、コロナ禍による利用控えやコスト増加が追い討ちとなったとみられる。入居者の家族から「コロ

政府、メイン→サブブランドへの移行円滑化など議論 携帯料金値下げで – Engadget日本版

総務省と消費者庁および公正取引委員会は、携帯電話料金の低廉化に向けた二大臣会合を12月9日から実施します。

JR西日本、京阪神地区で大晦日の終電後に臨時列車 – 3時頃まで運転 – マイナビニュース

JR西日本は4日、大みそか深夜から元旦にかけて、京阪神地区のJR京都線・JR神戸線(東海道・山陽本線)、大阪環状線、学研都市線(片町線)・JR東西線、大和路線(関西本線)などの路線で終電以降に臨時列車を運転すると発表した。

SAPPHIREのRadeon RX 6800に新モデル、オリジナルクーラー「Tri-X」搭載 – AKIBA PC Hotline!

トリプルファン仕様のオリジナルクーラー「Tri-X」を搭載したRadeon RX 6800ビデオカード。店頭価格は税込95,700円。

ITニュース(12/05)

楽天が3~5ギガバイトの低容量プラン検討 現行の半値1000円台も視野 – livedoor

今年4月から携帯電話事業に本格参入している楽天が、データ通信量3~5ギガバイトで現行プランの半値となる千円台も視野に、低容量・低価格の新プラン創設を検討していることが4日、分かった。3日に20ギガバ

福井県の大飯原発3・4号機 国の設置許可取り消す判決 大阪地裁 – NHK NEWS WEB

福井県にある大飯原子力発電所の3号機と4号機をめぐる裁判で、大阪地方裁判所は、国の原子力規制委員会の審査の過程に看過しが…

「1日5分」のおうちフィットネスアプリ「zeehaa」のshowcaseが1800万円を資金調達 – TechCrunch Japan

「1日5分」のおうちフィットネスアプリ「zeehaa」のshowcaseが1800万円を資金調達

中国科技大、光量子コンピュータで「量子超越性」を実証 スパコン富岳で6億年かかる計算を200秒で – ITmedia

中国科技大の研究チームが、従来のスパコンより量子コンピュータの計算能力の方が上回ることを示す「量子超越性」を光量子コンピュータで実証した。

40年前のデバイスの方が現代のデバイスより応答速度が速い – GIGAZINE

デバイスを操作してから、その操作の結果が返ってくるまでの時間である「レイテンシ」が低いほど、ユーザーは高速なレスポンスを感じることができます。コンピューターに関するさまざまな技術をテーマとするdanluu.comを運営するダン・ルー氏が、過去40年ほどの間に発売されたさまざまなデバイスのレイテンシを測定し、その結果を解説しています。

GIGABYTEの「Radeon RX 6800 GAMING OC 16G」が入荷、80mmファン×3基搭載 – AKIBA PC Hotline!

80mmファン×3基で構成された同社オリジナルクーラー「WINDFORCE 3X」を搭載したRadeon RX 6800ビデオカード。店頭価格は税込87,978円。

ファーウェイスマホは1台作るのに27秒しかかかりません。 – GIZMODO JAPAN

これまでの破竹の勢いから一転、アメリカによる制裁で苦境に立たされているHuawei(ファーウェイ)。そんなファーウェイのスマートフォンは1台作るのに27秒しかかからないって、しっていました?

Choromecast with Google TVレビュー: かゆいところに手が届く! コスパ最強セットが冷静に考えてすごいぞ – GIZMODO JAPAN

Googleから11月25日に発売となった「Choromecast with Google TV」。これまでGoogleが手掛けていたAndroid TVとChromecastがひとつになったデバイスです。使い心地をレビューします。

売り切れ必至! ChromebookなどのPC半額セールを今からチェック – 電撃オンライン

年内最後のお得な“楽天スーパーセール”が12月4日20:00から開催。HP Directplus楽天市場店では、時間・数量限定で人気ノートPC等の半額セールを実施します。

Microsoftが「Excel」に新機能を追加、カスタムデータ型を利用可能に – @IT

Microsoftは表計算ソフト「Microsoft Excel」に新機能を追加した。セルにデータソースからデータを取り込んで利用でき、ユーザーは独自のデータをカスタムデータ型として扱えるようになった。

ドスパラ、3年半ぶりのWindows搭載8型お絵かきタブレット – PC Watch

ドスパラは、Windows搭載の8型お絵かきタブレット「raytrektab 8インチモデル RT08WT」を予約開始した。発売は12月10日で、税別価格は4万9,800円。

Apple、12月8日に何らかの製品を発表? iPhone 12、M1 Macに続くのは何か – ITmedia

Apple Care関連の変更が行われる可能性があるという。それは製品の発売に関係するものなのか。

大飯原発 設置許可取り消し – Yahoo!ニュース

福井県などの住民ら127人が、関西電力大飯原発3、4号機(福井県おおい町)の設置許可を取り消すよう国に求めた行政訴訟の判決。大阪地裁は4日、住民側の請求を認めて許可を取り消した。

大飯原発、設置許可取り消し認める 大阪地裁判決 – 日本経済新聞

日本経済新聞の電子版。日経や日経BPの提供する経済、企業、国際、政治、マーケット、情報・通信、社会など各分野のニュース。ビジネス、マネー、IT、スポーツ、住宅、キャリアなどの専門情報も満載。

大飯原発の設置許可取り消し 住民ら原告側勝訴 大阪地裁が初判断 – 毎日新聞 – 毎日新聞

福井県や近畿地方の住民ら127人が、関西電力大飯原発3、4号機(福井県おおい町)について国の設置許可を取り消すよう求めた行政訴訟の判決で、大阪地裁は4日、許可を取り消した。森鍵一(もりかぎはじめ)裁判長は、原発が想定する地震の最大の揺れを示す「基準地震動」について、「原子力規制委員会の判断に看過し

iPhone 12に磁力で合体! ホルダー充電で落ちにくい小型の完全無線イヤフォン「Snapods」 – GIZMODO JAPAN

Kickstarterで、iPhone 12の背面に磁力でくっつく完全ワイヤレスイヤホン「Snapods」が登場。ただくっつくだけではなく、MagSafe経由で充電も行なえます。

中国、世界最速スパコンの100兆倍速い量子コンピューター開発と主張 – ブルームバーグ

世界最速のスーパーコンピューターよりも計算速度が100兆倍近く速い量子コンピューターを開発したと中国人科学者が主張している。

日本通信がドコモ対抗プラン、16GB/70分無料通話で1980円、12月10日から – ケータイ Watch

日本通信は、新料金プラン「SSDプラン」(仮称)を12月10日から提供する。月間16GB/70分無料通話で1980円(税別)。