游戏菜单不能正常使用C ++

时间:2013-05-02 01:13:37

标签: c++ ubuntu cout

所以我有一个游戏,当我运行它时,首先调用函数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”清除屏幕。但现在由于某种原因,它没有进入下一行。

编辑,现在我的菜单()无效。它要求输入,然后按下for循环清除,然后从不进行下一行。我输错了输入吗?或其他什么?

1 个答案:

答案 0 :(得分:1)

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

如果系统使用sh等,您可以使用clear来达到同样的效果。但你应该避免system一起使用,并寻找更强大的替代方案。


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

如果执行以下程序,它会抛出一个异装:

#include <stdlib.h>

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

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


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

How do you clear console screen in C?