C语言 如何在一段时间内检测键盘是否按下

如题,就像俄罗斯方块一样,如何做到在一段时间内,若有键按下则做相应的动作,没按下就自由下落.我是用VC6.0的,刚学编程,很多东西不懂,希望各位指教.1楼的只是等待输入,... 如题,就像俄罗斯方块一样,如何做到在一段时间内,若有键按下则做相应的动作,没按下就自由下落.
我是用VC 6.0的,刚学编程,很多东西不懂,希望各位指教.
1楼的只是等待输入,然后检测键盘按键,没有限制时间,
我想要的是如果一段时间都没按的话就做别的事.
展开
 我来答
llrsnake
2009-12-25 · TA获得超过2816个赞
知道小有建树答主
回答量:396
采纳率:0%
帮助的人:380万
展开全部
#include <bios.h>
#include <stdio.h>
main()
{
int key;
for(;;)
{
if (bioskey(1)) /*有键按下,读取键值*/
key=bioskey(0);
else /*无键按下,返回0*/
key=0;
switch(key)
{case 0: ...../*无按键,执行该操作*/
case 0xXXXXH:..../*不同键值,做不同处理*/
。。。。。
}
}
}

该程序段功能:
判断是否有键按下,若有进行不同操作,若无进行其他操作。

相关原理:
函数名: bioskey
功 能: 直接使用BIOS服务的键盘接口
函数原型:int bioskey (int cmd)
说明:bioskey()的函数原型在bios.h中
bioskey()完成直接键盘操作,cmd的值决定执行什么操作。

cmd = 1:
当cmd是1,bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。

键盘有按键时,会把键值(扫描码)存入缓冲区,当需要判断是否有键按下时,扫描缓冲区,为空则无键按下,不为空则有键按下。注意:该功能并不清空缓冲区。

cmd = 0:
当cmd是0,bioskey()返回键盘键入的值。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。

其操作步骤为:
1.检测缓冲区是否有数据;
2.没有则继续第一步;
3.读取缓冲区第一个单元中的键盘输入
4.读取的扫描码
5.将已读取的键盘输入从缓冲区删除
可以叫我表哥
2015-07-20 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464972
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
C语言实现的键盘检测:

/* 检测当前是否有键盘输入,并更新键值JR_KeyValue */
int JR_AnyKeys(void);

/* 返回键值ASCII码 或 对应自定义键值 */
int JR_GetKeyNum(void);

/* 检测指定键是否有按下 */
int JR_IsKeyDown(const int key);

BUG:在一次检测中多次调用函数JR_GetKeyNum()就会出错了。
FIX:把JR_KeyBoard.c文件中的JR_GetKeyNum()函数里面的第一句“JR_AnyKeys();”注释掉就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-12-23
展开全部
先获取时间,比较过期时间,以秒为单位,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友572ac5c16
2009-12-17 · 超过19用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:0
展开全部
#include <bios.h>
#include <stdio.h>
main()
{
int key;
for(;;){
key=bioskey(0);
if (key==0x11b) /*按了ESC键*/
break;
else
printf("0x%x\n",key); /*打印出各键对对应的键值*/
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
骂了隔B的
2009-12-19 · TA获得超过110个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:131万
展开全部
int key=0,i=0;
while(key==0&&i<100)
{
key=bioskey(0);
printf("%d\n",i);
++i;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式