C语言使用getch()读取方向键

时间:2021-01-09 21:58:36

通过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;
    }

C语言使用getch()读取方向键

例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;
    }

C语言使用getch()读取方向键