论坛: 编程破解 标题: 一个关于击键的C语言问题 复制本贴地址    
作者: f [yifanernei]    论坛用户   登录
各位大哥,我用C写了个俄罗斯方块(好象很多人都是从写这个开始的),后来把它改成两个人打的,就是你删一行,我就得加一行,到时间了,如果都没输就看谁的分数多(在VGA256下,用自己编的函数直接写屏,包括击键函数)可是这样一来,击键成了问题了,两个人一起按住不放的话就起作用了,谁有好一点的函数可以解决这个问题?请各位大哥帮忙!!!!

地主 发表时间: 04-01-06 16:14

回复: 286 [unique]   版主   登录
只接收键按下的处理,不处理键一直被按和松开的处理。
好象有一个这样的中断,记不清了。

B1层 发表时间: 04-01-06 17:31

回复: f [yifanernei]   论坛用户   登录
到底是高人呀,这种事我还没听说过呢,请一定帮我一下!谢谢!

B2层 发表时间: 04-01-07 09:32

回复: 286 [unique]   版主   登录
#include <conio.h>
#include <stdio.h>

void main( void )
{
    while(1)
    {
      if ( _kbhit())
              printf( "\n你按了%c键", _getch() );
    }
}
这个程序你作为参考吧。这个程序当你把一个键一直按着的时候,再按其它键时仍然有效。
该程序在VC6.0 windows2000 pro下调试通过。



B3层 发表时间: 04-01-07 10:03

回复: yingzike [yingzike]   论坛用户   登录
可以给你一个思路:读按键函数()
考虑一下,在读每一次按键时,先清空一下键盘缓存,要自己写个小函数吧
当然网络上也可以找到

B4层 发表时间: 04-01-07 12:43

回复: f [yifanernei]   论坛用户   登录
这些好象都不行呀,我都已经试过了!
我的那个读键函数就是用这两个函数写的
if(kbhit())
{
        c=getch();
        if(!c)
                c=getch();
        ........
}
还有那个清空健盘缓冲的函数,不知道我是不是弄错了,不起什么作用!
请各位再想想办法!


[此贴被 f(yifanernei) 在 01月07日19时23分 编辑过]

B5层 发表时间: 04-01-07 19:21

回复: f [yifanernei]   论坛用户   登录
高手们?帮帮忙呀!!!

B6层 发表时间: 04-01-10 23:28

回复: 286 [unique]   版主   登录
if(kbhit())
{
        c=getch();
        if(!c)
                c=getch();
        ........
}
什么意思?


B7层 发表时间: 04-01-12 09:59

回复: f [yifanernei]   论坛用户   登录
就是如果按的是一个普通字符就用c放它,如果是一个特殊字符就接收它的扫描码!

B8层 发表时间: 04-01-12 15:14

回复: 286 [unique]   版主   登录
但我感觉你的算是,无论是什么字符都用C存放,如果C为空时再读下一个按键.
你注意一下我的代码和你的代码本质不同.

B9层 发表时间: 04-01-12 15:46

回复: f [yifanernei]   论坛用户   登录
可是如果是特殊字符的话C中就是0了,其它字符是不会是0的!

B10层 发表时间: 04-01-12 16:03

回复: f [yifanernei]   论坛用户   登录
如果象你那么写,按方向键的话可以分辨出来吗?

B11层 发表时间: 04-01-12 16:09

回复: 286 [unique]   版主   登录
但你的处理是:
if(用户有按键)
{
        保存该键
        if(该键不是方向键)
                再读下一个键并保存      <------问题的关键
        ........
}
http://www.20cn.net/cgi-bin/club/show.pl?key=HDGYabHjBomY&cat=tech&forum=code&page=1&position=2&id=1063718736

这是我编的一个程序,你可以参考一下.特别是你注意一下其中的6的说明.




[此贴被 286(unique) 在 01月12日17时00分 编辑过]

B12层 发表时间: 04-01-12 17:00

回复: f [yifanernei]   论坛用户   登录
可是我想知道,那个函数可不可以按住一个键,再按另一个时,两个一起输出?
我想要的就是这种功能呀,两个一起按住时,两个都可以动,而不是,一个按住不动,
另一个按时可以动!像这个函数的话,如果我按着不动,你按一下,又按一下,我的
就不动了,如果我再按一下,你按着不动的话,你的就也不能动了!
没错,你那个网址上的函数和我这个功能是一样的,不信的话,你试一试!

B13层 发表时间: 04-01-13 17:05

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号