c语言怎么按方向键控制程序 ? c = getchar(); 我按了上 但是没有反应

 我来答
鸣蝉百
2020-02-29 · TA获得超过894个赞
知道答主
回答量:186
采纳率:100%
帮助的人:14.8万
展开全部

在C代码中可设置如下自编的intokey(  )函数,用以接收方向键值。库函数kbhit( )是检测是否有按键被按下,库函数getch(  )是读取键盘按键值的,不需按回车,也不回显。dir是代表方向的变量,根据不同的方向键值,让dir取1到4这四个不同的值。其它的程序段就可根据dir的值让东西朝某个方向移动。方向键按下后会产生2个值,第一个是224,另一个分别为上下左右的72、80、75、77,因此要读取2次值来判断。要包含#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.

    }

}

注:这个函数来源于某些“贪吃蛇”的代码,略有修改,足可获取方向键值。其中的1、2、

3、4分别对应着上下左右。

mapgis62
推荐于2018-05-07 · TA获得超过229个赞
知道答主
回答量:108
采纳率:0%
帮助的人:142万
展开全部
#include<stdio.h>
#include <conio.h>

方向键有两个字节,第一个字节是-32,所以判断是-32后再取一次,上左右下72,75,77,80

char c = _getch();
if(c==-32)
c=_getch();
switch(c)
{
case 27:
{printf("Esc");break;}
case 75:
{printf("左");break;}
case 72:
{printf("上");break;}
case 77:
{printf("右");break;}
case 80:
{printf("下");break;}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
倒退不悔
2013-03-03 · 超过19用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:44.5万
展开全部
#define LEFT 0x4b /*75*/

#define RIGHT 0x4d /*77*/

#define HOME 0x47 /*71*/

#define END 0x4f /*79*/

#define DOWN 0x50 /*80*/

#define UP 0x48 /*72*/

#define ESC 27 /*0x1b*/

#define ENTER 13

#define PAGEUP 73 /*0x49*/

#define PAGEDOWN 81 /*0x51*/

#define F1 59 /*0x3b*/

#define F2 60 /*0x3c*/

#define BREAKSPACE 0x20

以上是一些常用的方向控制键
c = getchar(); 是用来接收一个字符,然后存储在变量c的内存中,当你输入字符,按回车键的话,c变量等于已被赋值,想要有反应,可以选择putchar(c);用于输出字符
追问
没用 我按了 还是接受了回车键
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式