-1

私は現在、Visual Studio 2010 を使用して C++ で小さなコンソール ベースのテキスト ゲームを作成しています。名前を入力して難易度を選択したら、導入テキストを作成し、次のように入力します。

cout <<"Welcome "<<userName<<"... You are a lone: "<<pickRace<<" Your journey will be a "<<difficulty<<" one.";

そして、私はそれが次のように表示されることを望んでいます:ウェルカムブレイク... あなたは孤独な人間/オークです。あなたの旅は簡単/中程度/難しいものになります。

しかし、私はウェルカム ブレイクとして出てきます... あなたは孤独な 1/2 です。あなたの旅は 1/2/3 になるでしょう。

これは私のスイッチが原因だと思う問題ですが、数字ではなく名前で表示されるようにするには、どのように書き直す必要があるか教えてもらえますか?

元のコード:

cout <<"Please pick your race: \n";
cout <<"1 - Human\n";
cout <<"2 - Orc\n";
int pickRace;
cout <<"Pick your race: ";
cin >>pickRace;

switch (pickRace)
{
case 1:
    cout <<"You picked the Human race.\n";
    break;
case 2:
    cout <<"You Picked the Orc race\n";
    break;
default:
    cout <<"Error - Invalid imput; only 1 or 2 allowed.\n";
}


int difficulty;
cout <<"\nPick your level diffuculty: \n";
cout <<"1 - Easy\n";
cout <<"1 - Medium\n";
cout <<"3 - Hard\n";

cout <<"Pick your level difficulty: ";
cin >>difficulty;

switch (difficulty)
{
case 1:
    cout <<"You picked Easy.\n\n";
    break;
case 2:
    cout <<"You picked Medium.\n\n";
    break;
case 3:
    cout <<"You picked Hard.\n\n";
    break;
default:
    cout <<"Error - Invalid imut; only 1,2 or 3 allowed.\n";
}
4

5 に答える 5

2

として保管pickRaceしています。次のようなことを試してください:difficultyintegers

int pickRace;
string raceText;    //we will store the race type using this
cout <<"Pick your race: ";
cin >>pickRace;

switch (pickRace)
{
    case 1:
        cout <<"You picked the Human race.\n";
        raceText = "Human";
        break;
    case 2:
        cout <<"You Picked the Orc race\n";
        raceText = "Orc";
        break;
    default:
        cout <<"Error - Invalid imput; only 1 or 2 allowed.\n";
}

raceText文字列変数に注意してください。

これを繰り返して難易度を上げます。

次に、raceText と problemText を使用してメッセージを出力します。

out <<"Welcome "<<userName<<"... You are a lone: "<<raceText<<" Your journey will be a "<<difficultyText<<" one.";
于 2013-10-10T20:46:40.457 に答える
1

enums とオーバーロードのoperator<<使用を検討しoperator>>てください。

#include <iostream>
#include <cassert>

enum difficulty { EASY = 1, MEDIUM = 2, HARD = 3 };

std::istream& operator>>( std::istream& is, difficulty& d )
{
     int i;
     is >> i;
     assert( i > 0 && i < 4 ); // TODO: Use real error handling, throw an exception
     d = difficulty( i );
     return is;
}

std::ostream& operator<<( std::ostream& os, difficulty d )
{
    switch( d ) {
    case EASY: return os << "easy";
    case MEDIUM: return os << "medium";
    case HARD: return os << "hard";
    }
    return os << "unknown[" << (int)d << "]";
}

int main()
{
    difficulty d;
    std::cout << "Pick difficulty: 1-easy, 2-medium, 3-hard: ";
    std::cin >> d;
    std::cout << "You picked difficulty: " << d << std::endl;
}
于 2013-10-10T20:49:50.290 に答える
0

pickRace と難易度は整数です。実際の難易度ではなく整数を出力しています。どういうわけか論理的に難易度を表す必要があります (そして pickRace)

于 2013-10-10T20:46:37.307 に答える