【发布时间】:2014-08-08 02:03:09
【问题描述】:
C++ 新手尝试在二维数组上制作简单的文本游戏。
当我使用switch 语句时,如图所示。不管发生什么,它总是会打印默认值。
从其他线程和论坛中,我发现它可能与 getch() 有关,并且它返回 char 和 \n。
我已经尝试了一个小时,但我无法解决这个问题。我使用getch() 的原因是:C++ change canonical mode in windows(供参考)。
现在是我的部分代码:
//Set up game field
generateField();
setPlayerStart();
//printGameInfo(); TO BE MADE
//Start game while loop
int userInput;
do{
//system("cls"); DISABLED FOR TESTING PURPOSES
printField();
userInput = getch();
switch(userInput){
case 72:{ //ARROW UP
cout << "1What" << endl; //ALSO FOR TESTING PURPOSES
break;
}
case 80:{ //ARROW DOWN
cout << "2What" << endl;
break;
}
case 75:{ //ARROW LEFT
cout << "3What" << endl;
break;
}
case 77:{ //ARROW RIGHT
cout << "4What" << endl;
break;
}
case 113:{ //"q"
return false; //Quit game
}
default:{
cout << "Default..." << endl;
}
}
} while(userInput != 5);
【问题讨论】:
-
你没有
default,是吗? -
72 更可能是
H。getch不读取按键,它读取字符。 -
哇,我的错。 Ctrl-C Ctrl-V 显然不是那么容易。已编辑
-
当您遇到不应该经常发生的
default案例并输出某种日志或调试消息时,请首先包含将您带到default的实际变量。 -
@RetiredNinja:或者,更好的是,识别箭头键发送的序列。忽略任何事情都可能导致问题。
标签: c++ windows switch-statement