posted at 2015-10-19 23:56:56 +0000
我在使用C++做一个贪吃蛇程序的时候,卡在了如何利用C++判断方向键这里。
我原本想的是:直接用getch()判断按下按键的ASCII码是否为方向键的。可是我在维基百科的ASCII页面上并没有找到 ↑
↓
→
←
几个按键的ASCII码。在经过一番搜索后得到答案:http://bbs.csdn.net/topics/40312175 答案如下:
#define VK_LEFT 0x25 //=37
#define VK_UP 0x26 //=38
#define VK_RIGHT 0x27 //=39
#define VK_DOWN 0x28 //=40
然后我在我的程序里用switch语句 case了 37,38,39,40.然而却发现,在windows下,这样不可用。
按下相应按键后根本没有反应。
然后我想到了输出下getchar()得到的值,结果令我大吃一惊,输出值如下:
我们可以看到,每次按下方向键的时候,实际上是读入了2个数据,比如 224n75
代表的是左方向键(←)。
所以有了以下这个方法:先判断第一个读入的数据,再用getchr()得到一次,这次再用switch语句判断。代码如下:
//by Kanch
if(kbdown == 224) {
//determine which action to perform
kbdown = getch();
//due to up/down/left/right no ASCII code,it print out as 224n75
switch (kbdown) {
case VK_LEFT: //← pressed
cout << "left pressed" << endl;
break;
case VK_UP: //↑ pressed
cout << "up pressed" << endl;
break;
case VK_RIGHT: //→ pressed
cout << "right pressed" << endl;
break;
case VK_DOWN: //↓ pressed
cout << "down pressed" << endl;
break;
default:
break;
}
}
这样,我们便用C++实现了判断方向键是否被按下。
**<转载请注明出处>**转载请注明出处>
© kanch
→ zl AT kanchz DOT com
last updated on 2022-07-27 01:57:54 +0000