2

単純な問題だと確信していますが、理解できません。以下のコードでは、後でケース5でオプションを再表示できるようにしたいと思います。これどうやってするの?前もって感謝します!

// Input the race of your character
    cout << "Choose a race here: " << endl
    << "1) Human, 2) Elf, 3) Dark Dwarf, 4) Commoner, 5) Race info, 6) Admin Debug Race : ";

    cin >> mCharRace;

    switch (mCharRace)
        {
        case 1:
        cout << "You have chosen Human!" << endl;
        mExpPoints = 999;
        mArmor = mArmor + 2;
        break;
    case 2:
        cout << "You have chosen Elf!" << endl;
        mAccuracy = mAccuracy + 2;
        mWeapon.mDamageRange.mLow = mWeapon.mDamageRange.mLow + 1;
        break;
    case 3:
        cout << "You have chosen Dark Dwarf!" << endl;
        mWeapon.mDamageRange.mHigh = mWeapon.mDamageRange.mHigh + 2;
        mMaxHitPoints = mMaxHitPoints + 3;
        break;
    case 4:
        cout << "You have chosen Commoner! Brave man." << endl;
        mAccuracy       = mAccuracy - 3;
        mHitPoints      = mHitPoints - 5;
        mMaxHitPoints   = 8;
        mExpPoints      = -250;
        mNextLevelExp   = 1500;
        mArmor          = -1;
        break;
    case 5:
        cout << "Placeholder for explanation text." << endl;
        break;
    case 6:
        cout << "ADMIN POWERS UNITE!!!!!!!" << endl;
        mAccuracy       = 20;
        mHitPoints      = 1000;
        mMaxHitPoints   = 1000;
        mExpPoints      = 0;
        mNextLevelExp   = 1000;
        mArmor          = 100;
        mWeapon.mName   = "Admin Sword of HNNNG!";
        mWeapon.mDamageRange.mLow   = 100;
        mWeapon.mDamageRange.mHigh  = 150;
        mGold           = 1000000;
        break;
4

4 に答える 4

11

switch-case構造は、反復構造ではありません。特定のケースを選択して実行することしかできません。そのため、制御の流れを元に戻すことはできません。

したがって、ループに使用することはできません。しばらくの間、または代わりループ構造のためにそれを包みます。

while(condition){
   switch (mCharRace){
   ...
   ...
   }
}

ループを停止したい場合は、条件falseに変更するだけです。

于 2012-10-26T15:00:50.863 に答える
6

入力コードとスイッチコードをループでラップし、変数を割り当ててexitLoopループを終了します。入力を繰り返したい場合を除いて、デフォルトでその変数をTRUEに設定します。それらではexitLoop、falseに設定します。

于 2012-10-26T15:00:24.283 に答える
1

最初のcoutの前にラベルを追加します

label:

cout << "Choose a race here: " << endl
<< "1) Human, 2) Elf, 3) Dark Dwarf, 4) Commoner, 5) Race info, 6) Admin Debug Race : ";

cin >> mCharRace;
...

次に、ケース5内に、

goto label;
于 2012-10-26T15:00:15.643 に答える
1

for(;;)ループ内に入れて、のcontinue代わりに使用しbreakます。breakステートメントの終わりの後にもう1つ入れswitchて、本当に壊したいケースをキャッチします。

for (;;)
{
    switch (x)
    {
    case case_that_wants_to_loop:
        // ...
        continue;
    case case_that_wants_to_break:
        // ...
        break;
    }
    break;
}
于 2018-02-28T02:45:55.440 に答える