c语言中怎样输入和读取方向键

 我来答
百鸣蝉
2020-02-27 · TA获得超过216个赞
知道答主
回答量:55
采纳率:0%
帮助的人:2.8万
展开全部

在用C语言写出的“贪吃蛇”小游戏中,可以自编以下这个intokey( )函数,用来获取方向键值以便控制蛇的拐弯。库函数kbhit( )是检测是否有按键被按下,Dir是代表方向的变量,整型变量flag用来获取键值,1、2、3、4分别表示方向的上下左右。要#include<conio.h> .

void intokey( )

int flag;

   if ( kbhit( ) )  //判断有键按下时才执行下面操作

    { flag = getch( );  //用flag来获取键值

      if (flag==224) flag = getch( ); //值为224是方向键,要再次获取才行

   if (flag==72 && dir != 2)  dir = 1; //方向键为“上”且原方向不为下时,让dir=1.

if (flag==80 && dir != 1) dir = 2; //方向键为“下”且原方向不为上时,让dir=2.

   if (flag==75 && dir != 4)  dir = 3; //方向键为“左”且原方向不为右时,让dir=3.

  if (flag==77 && dir != 3)  dir = 4; //方向键为“右”且原方向不为左时,让dir=4.

  }

}

注:上下左右键按下后都会产生2个值,第一个是224,第二个才分别是72、80、75和

77.所以要用库函数getch( )两次获取键值。如果是ASDW来控制拐弯,flag可以定义为

字符型,获取一次键值即可。

Mexico卡卡
2017-07-07 · TA获得超过1万个赞
知道大有可为答主
回答量:1.3万
采纳率:98%
帮助的人:1791万
展开全部
一般是使用getch获取
方向键(←): 0xe04b
方向键(↑): 0xe048
方向键(→): 0xe04d
方向键(↓): 0xe050
一个方向键要用两个getch才能把它的数据获取完.
然后对应着两个字符数据, 一个当高位, 一个当低位, 就可以判断按下的是什么键, 如:
char ch = getch();
if(ch == 0xe000) //如果高位相等
{

ch = getch(); //那么再获取一个
if (ch == 0x004b) //如果低位也相同(和方向键左一样)
.... //你要执行的动作.

}
else //如果不是, 把这个字符吸收了.

getch()

新版的VC版本用_getch替换了.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式