问题标签 [kbhit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
579 浏览

c - kbhit 和多次调用函数

在制作小行星射击游戏时,我使用_kbhit()and kbhit(). 我不是专家,但这是我认为我遇到的问题:

所以,我认为正在发生的事情,它首先检查GetUserInput(),并且由于 的​​性质getch(),从缓冲区读取键盘并丢弃?无论如何,我将值存储在其中c并且应该适当地返回。但它只进行第一次检查。是因为在第一次检查后(在main()函数中)缓冲区上没有更多的输入了吗?

0 投票
1 回答
1845 浏览

c - 如何在 C 中使用 kbhit?

所以基本上我的程序检测到键盘键(我定义为 Ukey、Dkey、Lkey 和 Rkey 的 w、a、s 或 d)。该程序旨在通过按键检测方向,更改 x 和 y 值并保持它直到按下另一个键。

我的问题是,当程序运行并初始化默认方向(右)时,当我按下另一个键时,while 函数就会停止。如果我按下键几秒钟,它只会不断改变 x 和 y 值。

我的代码有什么问题?这是我第一次使用 kbhit,所以您的回答对我来说将是一个巨大的帮助。谢谢。

0 投票
1 回答
104 浏览

c++ - 为什么我的键盘敲击评估为假

我是一个 C++ 菜鸟编码蛇游戏。整个程序完美地绘制了棋盘、水果和蛇头,但是我似乎无法使用键盘敲击功能来改变蛇头坐标。当通过输入函数获取蛇移动的键盘敲击时,运行程序时似乎 if(kbhit) 评估为假,我的错误是什么,我怎样才能让蛇头移动?

谢谢。

0 投票
2 回答
1264 浏览

c++ - 如何重置 kbhit()?

我正在制作打字游戏,其中随机字母从屏幕顶部下降到底部,用户需要按下该键才能获得分数。有两个嵌套循环用于产生这种下降效果。外部 while 循环生成随机字母和 x 轴上的随机位置,而内部 for 循环递增 y 轴坐标并打印每个 y 坐标值的字符以使其下降。现在的问题是,当我在 for 循环中使用 kbhit() 函数来检查用户是否按下了任何键时,当用户没有按下任何键时它返回 false。但是当用户第一次按下一个键时,它返回 true 并且用户得到分数。但是当为下一个随机字母再次调用 kbhit() 时,无论用户是否敲击键盘,它都会返回 true,因为用户之前按下了 ket。可能是我需要清除键盘缓冲区,但我不知道该怎么做。这是

0 投票
1 回答
38 浏览

c - 从其他 C 程序观察运行程序的活动。[报告击键]

我想监视一个在一个终端窗口上运行的交互式 C 程序(比如 program1)。并将输入作为数字(0-9)

正如我所期望的监控:当我向program1(在单独的终端上运行)提供输入时,我的观察者应该检测到按键被按下(从单独的终端)。

为此,我必须编写一个 C 程序 (observer_prog.c),它将在单独的终端上执行,等待来自 program1 的活动。

我为 GCC 编译器 kbhit() 函数实现了以下链接中的建议。但它无法检测到来自不同终端执行的击键。

gcc 的 kbhit() 实现

无论如何我可以改进这个现有的模块,或者任何其他解决方法?

观察者计划

0 投票
1 回答
37 浏览

windows - 当键盘和语言环境为美国(非国际)时,在 Windows 10 中,kbhit() 对“、%、~”等字符的实际行为没有相关答案

在戴尔 XPS13 上安装了最新更新的 Windows 10。选择美国键盘布局和美国区域设置(非国际)。仍然调用 kbhit() 或 _kbhit() 与特定字符,如“,〜,%不返回键击,至少直到一定的时间量(〜1秒)和第二个字符被击中。我尝试使用 kbhit() 因为我需要一个非等待功能。如何正确检测键盘击中 " 或 % 一次击键?在 Linux 中,在标准输入上使用超时 select() 效果很好,但在 Windows 上似乎不行。

谢谢,-帕特里克

0 投票
1 回答
94 浏览

c++ - 为什么这个例子只适用于断点

我正在用 C/C++ 创建一个基本的控制台应用程序。

在下面的示例中,我以 50 毫秒的延迟反复向控制台写入一些字符,并且我希望它在我击键时退出程序。

if(c){...我的问题是,在我的项目中,只有当我在这里设置断点时它才会进入状态:

我正在使用视觉工作室 2017。

我已经在新项目的另一台 PC 上尝试过这段代码,我没有遇到任何问题

我相信这与我的项目设置有关。

0 投票
1 回答
144 浏览

c - 函数 kbhit 在 C 中移动对象

该程序正在检测右键盘键,但是当我尝试通过按键盘上的箭头移动对象时,但是当我这样做时,无论我按哪个箭头,它都会进入同一行。我正在寻求帮助以将这个对象移动到不同的位置。

0 投票
3 回答
230 浏览

c - make 给了我一个我不理解 TurboC 的错误

我正在努力学习C,为了好玩。我正在使用 Linux 发行版。我正在尝试编译一个使用kbhit(). 我找到了一种使用 TurboC ( http://www.sandroid.org/TurboC/#Download ) 的方法。

我按照说明操作,但make给了我这个:

我真的不知道如何处理这个错误:

有人可以帮助我吗?

0 投票
1 回答
207 浏览

c - 如果连续按下按钮,如何立即检测?

当您在 Windows 上按住一个键时,它会按一次,然后会有大约 0.3 秒的小延迟,只有在该延迟之后,它才会开始连续按下它。像这样:x(0.3 秒延迟)xxxxxxxx。

如果我使用 kbhit() 来检测是否按下了按钮,它不会在 0.3 秒的延迟内检测到按钮,因此不会在这段时间内运行所需的代码。

我怎样才能解决这个问题?(在 Windows 控件中将延迟设置为最小(0.25 秒)对我来说是没有选择的。)

我已经尝试过 kbhit() 和 getch() 的所有可能组合。

当我在我的示例中按 a 时,它应该连续运行 ToDo(),在第一次之后没有 0.3 秒的中断。但事实并非如此。