所以我有一个游戏,当我运行它时,首先调用函数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循环清除,然后从不进行下一行。我输错了输入吗?或其他什么?
答案 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。这可能非常可怕。
这个问题有一些很好的相关答案: