C++ Switch 语句 - 给玩家另一个选择的机会

标签 c++ switch-statement default

这是我一直在研究并试图改进的一本书中的一段代码,但我无法找到一种方法让玩家在输入默认选项后再次有机会选择难度。这是一个非常简单的控制台文本游戏,当玩家选择错误时,游戏不允许玩家重新选择。

 int _tmain(int argc, _TCHAR* argv[])
 {
     cout << "Difficulty Levels\n\n";
     cout << "1 - Easy\n";
     cout << "2 - Normal\n";
     cout << "3 - Hard\n\n";

     int choice;
     cout << "Choice: ";
     cin >> choice;


     switch (choice)
     {
      case 1:
         cout << "You picked Easy\n";
         break;
     case 2:
         cout << "You picked Normal\n";
         break;
     case 3:
         cout << "You picked Hard\n";
         break;
     default:
         cout << "Your choice is invalid.\n";
     }

     system("pause");
     return 0;
 }

最佳答案

您可以将开关重构为一个函数,每当玩家想要更改他们的难度选择时都可以调用该函数。

int choose()
{
    int choice;
    cout << "Difficulty Levels\n\n";
    cout << "1 - Easy\n";
    cout << "2 - Normal\n";
    cout << "3 - Hard\n\n";

    cout << "Choice: ";
    cin >> choice;

    switch (choice)
    {
     case 1:
        cout << "You picked Easy\n";
        break;
    case 2:
        cout << "You picked Normal\n";
        break;
    case 3:
        cout << "You picked Hard\n";
        break;
    default:
        cout << "Your choice is invalid.\n";
        choice = 0; //this will signal error
    }
    return choice;
}

int _tmain(int argc, _TCHAR* argv[])
{
    int choice = 0;
    while(choice == 0){choice = choose();};  
    system("pause");
    return 0;
}

现在每当玩家决定改变难度(也许他们输入一个特殊字母)时,您都可以使用 choice = choose() 来改变难度。

关于C++ Switch 语句 - 给玩家另一个选择的机会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20894986/

相关文章:

hibernate - 更改枚举的默认 hibernate 映射策略

c++ - 为什么我会调用 implicitly_deleted 默认构造函数?

java - 为什么在java8中使用 "default"关键字

c++ - _beginthreadex 静态成员函数

c++ - 在头文件名中包含句点

java - 程序错误识别字符

groovy - 带有多个变量的常规 switch case 语句

c++ - 从不同线程写入文件的正确方法(使用 Qt c++)

c++ - PJSIP/PJSUA2 - 流 AudioMediaPlayer/AudioMediaRecorder

c 关于缩小此功能的想法?