-1
int main()
{
    int cstats, choice;
    int rhp, hp, i, init, atk, def, matk, mdef, dmg, mdmg, agi, magi;
    cout << "Please choose your specialty: ";
    cout << "[1] Offense [2] Magic [3] Defense [4] Speed";
    switch(cstats)
    case 1:
        atk = 15;
        def = 5;
        agi = 5;
        break;
}

这是我一开始的台词。正如您在代码中看到的那样。我想使用 switch 语句来获得不同的整数,但是当我总是放 break 时;并继续下一个案例,我总是遇到问题。是否可以使用 switch 对整数进行选择?还是我只是做错了?我正在制作基于文本的游戏。

4

3 回答 3

1

您的语法有点偏离 - 您需要将switch块括在花括号中:

switch(cstats)
{
    case 1:
        atk = 15;
        def = 5;
        agi = 5;
        break;
}
于 2013-10-22T14:59:08.227 回答
1

除了 switch 语句中缺少的花括号。cstats是未定义的,在以某种方式定义它之前阅读它是未定义的行为。

在此处阅读有关如何从命令行获取整数的信息:http ://www.cplusplus.com/forum/articles/6046/

顺便说一句,你应该总是定义你的变量,最好在初始化时,当你有数千行代码并且发生的事情完全没有意义时,它更安全,更容易调试,就像通常情况一样未定义的行为。

于 2013-10-22T15:02:57.963 回答
1
int main()
{
    int cstats, choice;
    int rhp, hp, i, init, atk, def, matk, mdef, dmg, mdmg, agi, magi;
    cout << "Please choose your specialty: ";
    cout << "[1] Offense [2] Magic [3] Defense [4] Speed";

    cin >> cstats;
    switch(cstats)
    {
        case 1:
            atk = 15;
            def = 5;
            agi = 5;
            break;
        case 2:
                   //other code
            break;
        ....
        default:
          //Here you can prompt to select 1,2,3 or 4
    }
}
于 2013-10-22T15:06:32.353 回答