1

所以我有一个游戏,当我运行它时,首先调用函数menu()。由于某种原因,它不会接受输入并正确地进入下一步。有任何想法吗?

void menu() {
    char x = -1;
    while (x != '3') {
        cout << "\n";
        cout << "\n";
        cout << "\n---------------------";
        cout << "\n     Main Menu       ";
        cout << "\n 1 - Start a New Game";
        cout << "\n 2 - Instructions    ";
        cout << "\n 3 - Exit Game       ";
        cout << "\n---------------------";
        cout << "\n";
        cout << "\n";
        cout << "\n     Enter Selection:";
        cin >> x;
        switch (x) {
            case '1':
                for(i=0; i<15;i++){
                cout<<"\n"
                }
                playgame();
                break;
            case '2':
               for(i=0; i<15;i++){
                cout<<"\n"
                }
                instructions();
                break;
            case '3':
                for(i=0; i<15;i++){
                cout<<"\n"
                }
                cout << "Good bye\n" << endl;
                break;
            default:
                cout << "Invalid Character\n";
                cout << "\n";
                cout << "Press Space to continue\n";
        }
        for(i=0; i<15;i++){
                cout<<"\n"
                }
    }
}

我对其进行了更改,因此它只是通过使用 for 循环和“\n”来清除屏幕。但现在由于某种原因它没有击中下一行。

编辑,现在我的 menu() 不起作用。它要求输入,然后按 for 循环清除,然后永远不会执行下一行。我是否错误地传递了输入?或者是其他东西?

4

1 回答 1

1

如果您使用的是 Ubuntu/Debian(或任何类型的 Linux)system("CLS")可能无法正常工作。CLS是清除终端的 DOS 命令。

如果系统使用shetc. 你可以使用clear相同的效果。但是您可能应该避免system所有这些,并寻找更强大的替代方案。


我在 Windows 上使用 bash,结果在这个配置上更加有趣,因为在 Windows 上system使用cmd.exe,因此CLS有效,但不是clear.

如果执行以下程序,它会发出嘶嘶声:

#include <stdlib.h>

int main(int argc, char *argv[])
{
        system("clear");
}

正如您所看到的,当您运行时究竟会发生什么system完全取决于底层 shell。底层的 shell 可能不是你执行程序的 shell。这可能非常可怕。


这个问题有一些很好的相关答案:

如何在 C 中清除控制台屏幕?

于 2013-05-02T01:33:02.173 回答