通过getch()来使用方向键(→←↑↓)
对于和我一样的菜鸟而言,刚开始写程序经常要用到方向键,来实现控制(比如贪吃蛇、俄罗斯方块等等)。由于使用”→←↑↓”和使用“WASD比较”,输入显得更直观一些直观一些,所以大家更倾向用方向键输入。
但有一点需要注意:
1、使用getch读取字符时,读取一次就行
2、而读取方向键和功能键是,需要读取两次
(第一次的返回值为0或者224(方向键))
getch函数在读取一个功能键或者箭头(方向)键盘时,函数会返回两次,第一次调用返回0或者0xE0,第二次调用返回实际的键值。
例1、使用getchar()输入一个按键
字符的返回值为ASII码,观察方向键的返回值
#include<stdio.h>
#include <conio.h>
int main()
{ //实现读入一个字符,输出getch的返回值码
int ch;
while (1)
{
while (ch=getch()) //把得到的值赋值给ch
{
printf("%d\n",ch); //依次输入 a b c d ↑↓ ← →
}
}
return 0;
}
例2、使用getch()读取方向键
#include<stdio.h>
#include <conio.h>
int main()
{
int ch1=0;
int ch2=0;
while (1)
{
if (ch1=getch())
{
ch2=getch();//第一次调用getch(),返回值224
switch (ch2)//第二次调用getch()
{
case 72: printf("The key you Pressed is : ↑ \n");break;
case 80: printf("The key you Pressed is : ↓ \n");break;
case 75: printf("The key you Pressed is : ← \n");break;
case 77: printf("The key you Pressed is : → \n");break;
default: printf("No direction keys detected \n");break;
break;
}
}
}
return 0;
}