|
![]() | 作者: 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号