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} }
}
}
在用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可以定义为
字符型,获取一次键值即可。
用bioskey()函数可以实现读取键盘的上下左右键
函数原型:int bioskey (int cmd)
说 明:bioskey()的函数原型在bios.h中,即必须包含头文件#include<bios.h>
读取方向键可以用下面的程序啊!
#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)
{
case Key_Up : {printf(" 向上方向键被按下") break}
case Key_Down : {printf(" 向下方向键被按下") break}
case Key_Left : {printf(" 向左方向键被按下") break}
case Key_Right : {printf(" 向右方向键被按下") break}
}
}