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

c语言中怎样输入方向键?方向键的ascII码是多少 ?bioskey();和kbhit();怎么读取方向键?我想写成“if(方向键1) 。。。else if(方向键2)。。。else。。。”这种格式
该怎么写?

在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; 

                 if ( flag==80 && dir != 1 ) dir = 2; 

                if ( flag==75 && dir != 4 )  dir = 3; 

                if ( flag==77 && dir != 3 )  dir = 4; 

               }

          if (flag==13)

               {  while( 1 )  if ( ( flag=getch( ) )==13 )  break ;  }

      }

}

注:这个函数来源于某些“贪吃蛇”的代码,略有修改,足可获取方向键值。其中的1、2、 3、4分别对应着上下左右。当flag获得键值后,分两种情况:一是flag=224,此时再次获取键值以判断输入的是4个方向中的哪一个;二是flag=13,表示按下回车键,我们就执行循环,程序暂停,等待再次输入回车,程序继续运行。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2020-03-03
一般是使用getch获取
方向键(←): 0xe04b
方向键(↑): 0xe048
方向键(→): 0xe04d
方向键(↓): 0xe050
一个方向键要用两个getch才能把它的数据获取完.
然后对应着两个字符数据, 一个当高位, 一个当低位, 就可以判断按下的是什么键, 如:
char ch = getch();
if(ch == 0xe000) //如果高位相等
{

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

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

getch()

新版的VC版本用_getch替换了.本回答被网友采纳
第2个回答  2020-02-24
在贪吃蛇中定义了intokey( )函数[你也可以改成别的],整个函数体中的代码就是获取键盘
的方向键值,倒数第2-5行是获取回车键值,用于起暂停作用。这里用direction表示方向,
程序中UP、DOWN、LEFT、RIGHT分别固定代表1、2、3、4这四个值。第三行判断获得
了向上的键值,第四行在direction不等于DOWN值(就是2)时执行else {direction = UP; }
第(5、6);(7、8);(9、10)等行的意思,与这第(3、4)行类似,只是取值不同。
要包含文件 #include<conio.h> 。
void intokey()
{
if (GetAsyncKeyState(VK_UP) && 0x8000)
{ if (direction == DOWN) { } else {direction = UP; } }
if (GetAsyncKeyState(VK_DOWN) && 0x8000)
{ if (direction == UP) { } else {direction = DOWN; } }
if (GetAsyncKeyState(VK_RIGHT) && 0x8000)
{ if (direction == LEFT) { } else {direction = RIGHT; } }
if (GetAsyncKeyState(VK_LEFT) && 0x8000)
{ if (direction == RIGHT) { } else {direction = LEFT; } }
if (GetAsyncKeyState(VK_RETURN) && 0x0D)
{ while (1)
{ if (GetAsyncKeyState(VK_RETURN) && 0x0D) { break; } }
}
}
第3个回答  2019-03-27
哪有他们说的那么复杂,直接 int ch = _getch(); 试试不就知道了?上下左右都是不一样的;注意是 int 不是 char ;
第4个回答  推荐于2017-11-25
可以使用 _getch 函数

#include <stdio.h>
#include <conio.h>

void main()
{
char key, key2;
bool needNextKey = false;

while( ( key = _getch() ) != 27 ) //press ESC to break
{
if( needNextKey )
{
if( key2 == -32 )
{
if( key == 75 ) //left
{
printf_s( "<--\n" );
}
else if( key == 77 ) //right
{
printf_s( "-->\n" );
}
}
needNextKey = false;
}
if( key <= 0 )
{
key2 = key;
needNextKey = true;
}
}

printf_s( "press any key to continue...\n" );
_getch();

}本回答被网友采纳

c语言中怎样输入和读取方向键?
一般是使用getch获取方向键(←): 0xe04b方向键(↑): 0xe048 方向键(→): 0xe04d 方向键(↓): 0xe050 可以使用 _getch 函数 #include <stdio.h> #include <conio.h> void main() { char key, key2; bool needNextKey = false; while( ( key = _getch() ) != 27 ) \/\/pres...

c语言中怎样输入和读取方向键?
在C代码中可设置如下自编的intokey( )函数,用以接收方向键值。库函数kbhit( )是检测是否有按键被按下,库函数getch( )是读取键盘按键值的,不需按回车,也不回显。dir是代表方向的变量,根据不同的方向键值,让dir取1到4这四个不同的值。其它的程序段就可根据dir的值让东西朝某个方向移动。...

c语言中怎样输入和读取方向键
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 !

c语言中怎样输入和读取方向键?
在贪吃蛇中定义了intokey( )函数[你也可以改成别的],整个函数体中的代码就是获取键盘的方向键值,倒数第2-5行是获取回车键值,按下回车键游戏就暂停。这里用direction表示方向,程序中UP、DOWN、LEFT、RIGHT分别固定代表1、2、3、4这四个值。第三行判断获得了向上的键值,第四行在direction不等于D...

如何获分辨键盘是输入了方向键,用的是C语言!
1、一般是使用getch获取方向键(←): 0xe04b方向键(↑): 0xe048方向键(→): 0xe04d方向键(↓): 0xe050一个方向键要用两个getch才能把它的数据获取完.然后对应着两个字符数据, 一个当高位, 一个当低位, 就可以判断按下的是什么键, 如:char ch = getch();if(ch == 0xe000) \/\/...

c语言中如何识别键盘输入的方向键?
UINTuMsg,\/\/ 窗口的消息 WPARAMwParam,\/\/ 附加的消息内容 LPARAMlParam)\/\/ 附加的消息内容 这个消息响应函数,然后用switch语句对于 case WM_KEYDOWN:即键盘按下时的消息响应,这个时候再判断传进来的参数wParam的值,方向键对应键值分别为VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT,下面是一个例子,你自己看看...

C语言怎么输入方向键左?
\\n");break;}}}return 0;}方向键,按1个键,有2个信号。数值与操作系统键盘设置有关。判断方向键需要2个键值。win-7 键值如下:int key1,key2; key1 = getch(); key2 =getch();上移 224,72 (0xe0,0x48)左移 224,75 (0xe0,0x4b)右移 224,77 (0xe0,0x4d)下移 224...

关于c语言如何捆绑上下左右四个键
读取方向键可以用下面的程序啊!include<stdio.h> include<bios.h> define Key_Up 0x4800 \/\/ 向上方向键 define Key_Down 0x5000 \/\/ 向下方向键 define Key_Right 0x4d00 \/\/ 向右方向键 define Key_Left 0x4b00 \/\/ 向左方向键 void main(){ int key=bioskey(0);switch(key){ ...

C语言的编译和运行按什么键
下面是Visual Stdio的命令快捷键列表:CTRL + SHIFT + B 生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O 打开项目 CTRL + SHIFT + C 显示类视图窗口 F4 显示属性窗口 SHIFT + F4 显示项目属性窗口 CTRL + SHIFT + E 显示资源视图 F12 转到定义 CTRL + F12 转到...

c语言编程一些快捷键
C语言编程一些快捷键如下:CTRL + SHIFT + B生成解决方案 CTRL + F7生成编译 CTRL + O打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口 F4显示属性窗口 SHIFT + F4显示项目属性窗口

相似回答