每当我运行“ return main();”

时间:2019-04-02 21:35:21

标签: c++ variables

每次使用Level时,我需要将return main();加1。

我需要一些不需要在int main()中设置变量的东西,或者每次都绕过level = 0;的变量,但是第一次,但我不知道该怎么做。

如果那里有一些编码向导,如果您能帮助我,我将不胜感激(是的,我用Level替换了欢迎消息中的"placeholder")。

我尝试制作一个新文件,将其放在int main() {}上方,并在结束代码之前使用变量在开始之前将其设置为1,以便仅将{{1} }设为0,如果另一个变量(我们将其称为level)为1,则此操作无效,因为每次将reset设为0时,变量将再次启动。那没有用,所以我摆脱了它。

reset

应该每次运行int main() { int level; level = 0; system("cls"); //varibles int secret, guess; // color SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4); //the number that you guess! srand(time(NULL)); secret = rand() % 100 - 0; cout << " Number Guessing Game!" << endl; cout << "----------------------------------" << endl; cout << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 6); cout << "Welcome my name is Luffy Computron. your currant level is " << "placeholder" << endl; cout << " I will randomly pick a number between 0 and 100" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 22); cout << "Take a guess" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 2); cout << "Guess:"; cin >> guess; while (guess != secret) { if (guess > secret) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 6); cout << "Too large. Try again." << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 2); } if (guess < secret) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 6); cout << "Too small. Try again." << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 2); } cout << "Guess:"; cin >> guess; } if (guess == secret) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 6); cout << "Congradulations!" << endl; if (level == 1) { cout << "you are now an untrained aprentice of the computron team"; cout << "to become an aprentice play 4 more times!"; } } Sleep(2000); return main(); } 时将level更改一次 但它保持在1。

1 个答案:

答案 0 :(得分:5)

请勿致电main()。围绕要重复的内容使用循环:

int main() {
    bool running = true;
    int level = 0;

    while(running) {

        //...

        ++level;
    } // <- your old return main(); replaced with }
}

这将在代码中标记的while(running) {}之间循环,直到将running更改为false。您还可以使用break;退出最近的环绕循环,如下所示:

    while(true) {
        if(some_condition) break;
    }
  

应该在每次运行return main()时将级别更改一次;   但它保持在1。

在当前代码中,您在level = 0;的开头分配main()。通过使用上述循环,分配将仅发生一次。