2016-03-22 5 views
0

私は多くのブール変数を持っているとしましょう(私はテキストベースのアドベンチャーゲームを作ろうとしています。選択された選択肢に応じて分岐するパスが必要です)、与えられた文字列が等しいかどうかを調べる簡単な方法があります初期化された変数の名前または初期化された構造体のメンバ? (変数をfalseからtrueに変更できるように)変数または構造体のメンバーの存在を確認するにはどうすればいいですか?

+0

いいえ。プログラムがコンパイルされると、すばらしい変数名がすべて消えてメモリオフセットに置き換えられます。 – user4581301

+2

クラス内に 'std :: map 'が必要なのでしょうか? – NathanOliver

+1

または 'std :: set 'となります。 – Jarod42

答えて

0

std::mapを使ってモンスターと戦うという簡単な例です。

は、trueまたはそうでないかもしれない名前付きフラグのリストを定義し、割り当てます。このリストは、

if (flags["key"]) 

で見ることができます。「キー」が存在するかどうかを確認するには、flagsを参照してください。存在する場合、マップされた値(trueまたはfalse)が返されます。それが存在しない場合、Javaに精通している場合はこれが大きな違いです。「key」が作成され、デフォルト値(この場合はfalse)に設定されます。

#include <iostream> 
#include <map> 

void slaymonster(std::map<std::string, bool> & flags) 
{ 
    //check if hero has sword of monster slaying 
    if (flags["has sword of monster slaying"]) 
    { 
     flags["monster slain"] = true; // sets key "monster slain" to true so 
             // hero can do stuff that requires 
             // monster to have been slain 
     std::cout << "Thou hast slain the monster!\n"; 
    } 
    else 
    { 
     std::cout << "Thou hast been slain by the monster!\nInsert coin to continue.\n"; 
    } 
} 

int main() 
{ 
    std::map<std::string, bool> flags; 

    std::cout << "Try to slay monster before finding sword\n"; 
    slaymonster(flags); 

    std::cout << "\nHero finds sword of monster slaying\n"; 
    flags["has sword of monster slaying"] = true; 
    std::cout << "Try to slay monster after finding sword\n"; 
    slaymonster(flags); 

    std::cout << "\nHero is mugged and loses sword of monster slaying\n"; 
    flags["has sword of monster slaying"] = false; 
    std::cout << "Try to slay monster after losing sword\n"; 
    slaymonster(flags); 
} 

出力:

Try to slay monster before finding sword 
Thou hast been slain by the monster! 
Insert coin to continue. 

Hero finds sword of monster slaying 
Try to slay monster after finding sword 
Thou hast slain the monster! 

Hero is mugged and loses sword of monster slaying 
Try to slay monster after losing sword 
Thou hast been slain by the monster! 
Insert coin to continue. 
+0

これは素晴らしいです!非常によく説明され、非常に関連性の高い例もあります!ありがとうございました! – Nex

関連する問題