首先抱歉我的英语。 我试图制作一个控制台游戏。在游戏结束时,我想通过使用键盘上的箭头键选择是或否来让用户选择继续游戏。但它现在很奇怪。当我按下箭头键时,光标应该移动,但它只会移动一点,然后返回选择“是”。我真的无法弄清楚这里发生了什么,所以我想问一个知道为什么会这样的人。请教我,我做错了什么。 谢谢。
void askForRestart() {
bool yesOrNo = true;
system("cls");
cout << "You died." << endl;
cout << "Restart?" << endl;
cout << "> YES" << endl << " NO";
while (true) {
int arrowKeycode = 0;
switch (arrowKeycode = _getch()) {
case KEY_ENTER:
break;
default:
if (yesOrNo) {
yesOrNo = false;
system("cls");
cout << "You died." << endl;
cout << "Restart?" << endl;
cout << " YES" << endl << "> NO";
break;
}
else {
yesOrNo = true;
system("cls");
cout << "You died." << endl;
cout << "Restart?" << endl;
cout << "> YES" << endl << " NO";
break;
}
}
cin.clear();
//cin.ignore(10000, '\n');
}
}
答案 0 :(得分:0)
因为这是它的工作原理。对于普通字符键(数字,字母),它返回键码。但是如果你点击箭头或功能键,_getch会返回0,这表示你必须再次调用_getch来获取实际的密钥代码。
MSDN:
当读取功能键或箭头键时,每个功能必须被调用两次;第一个调用返回0或0xE0,第二个调用返回实际的键代码。
所以你应该改变你的关键阅读程序。