问题标签 [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 投票
2 回答
2556 浏览

c - How to run program whilst listening for user input in C?

I'm trying to make a game that continues running until a key is pressed and then it should take that key in and do something with it then continue running as per normal. How do I do this?

I'm on MAC so even though I've come across a windows library called conio.h which can handle this using kbhit() and getch(), I can't get it working for me...

0 投票
3 回答
971 浏览

c - 是否可以在 C 中编写自己的 kbhit()?

我在我的大学上了一门编程课,我正在研究一些程序。我想知道是否可以编写我自己的kbhit()函数。如果可以看,如何kbhit()编码。

目的是我需要知道我使用的函数是如何工作的。

0 投票
3 回答
8494 浏览

python - PyCharm:msvcrt.kbhit() 和 msvcrt.getch() 不起作用?

我试图从 PyCharm 的控制台中读取一个字符(不按回车键),但无济于事。这些函数msvcrt.getch()会停止代码,但不会对按键做出反应(甚至回车),并且msvcrt.kbhit()始终返回 0。例如,此代码不打印任何内容:

我正在使用 Windows 7,PyCharm 3.4(在空闲时也是如此)。

怎么了?有没有其他方法可以在不输入的情况下读取输入?

0 投票
1 回答
7281 浏览

c - kbhit() 和 getch() 和 system("cls") 的便携式替代品

我需要一种以可移植方式使用 kbhit 和 getch 功能的方法。我目前正在开发一个简单的 ascii 游戏,我需要检测是否按下了某个键。如果是,我需要阅读它,如果不是,我需要继续而不等待输入。我宁愿不附和它,但我不会对此挑剔。我认为 kbhit 和 getch 对此非常有用,但我只被允许使用完全可移植的代码(至少是用于 linux、mac 和 PC 的代码,但我不会想到很多其他操作系统)。据我了解,termios、curses 和 conio 库并没有在我需要的所有三个操作系统上完全实现。我不知所措。我发现的每个解决方案都使用不可移植的代码。有没有办法我自己可以为此编写可移植的函数?我目前包括 stdio.h、stdlib.h 和 time.h。我还需要一种便携式方式来清除屏幕,因为我目前正在使用 system("cls") 和 system("clear") 每次我更改操作系统时也必须更改它们,或者是我可以做的一种方式if-else 并检测代码正在运行的操作系统以在这两个语句之间切换。这是具有这些功能的一段代码:

这基本上是我在代码中需要的功能,但我想不出一种可移植的方式来做到这一点,而且我的老师要求代码使用标准 c 和标准库在 Linux、mac 和 pc 上工作。请帮忙!请不要使用 c++,我们使用的是 c。

编辑:我不认为 ncurses 不是我想要的。有人建议我#ifdef在编译时使用来实现这些。我喜欢这个解决方案,但我需要一些帮助来了解如何在 linux 和 mac 上执行此操作,因为我只能使用当前设置在 windows 上进行测试。希望我很快就会在我的另一台机器上运行 linux 进行测试,但是 OSX 的价格很高,所以我将不胜感激。这是当前代码:

0 投票
1 回答
46 浏览

c - Why do I get different outputs by using different loops?

I made a code that inputs four letters, and prints an '*' in place of each one, as in a password. The working code is this:

Now I have two questions: 1) Why do I get four ╠'s when I change the loop to:

and 2) Why do I get an extra ╠ at the end when I change the second loop's upper limit to c<=4?

The second loop being this:

0 投票
1 回答
652 浏览

c++ - 将 GetAsyncKeyState() 重置为默认值

我正在学习使用和的组合kbhit()来构建我的控制台游戏。GetAsyncKeyState()getch()

我正在使用 Visual Studio 2010 Express,C/C++ 标头对我来说没问题。

兼容性问题(仅在 Windows 平台上运行)对我来说并不重要。

看看这个简单的代码:

问题是:任何虚拟键输入都会打印两次,而其他的运行正常。

我不知道是什么问题,但我找到了简单的解决方法。

我的猜测是GetAsyncKeyState()没有正确清除为默认值

有什么解释吗?

_getch()为每个添加,kbhit()并且GetAsyncKeyState()是一种冗余,因此会降低可读性,还有其他选择吗?

0 投票
1 回答
1916 浏览

c++ - 我可以在 OS X 上使用 windows.h 吗?

我正在学习计算机科学,我们在通话中与视觉工作室合作。我更喜欢使用我的 mac 并且不支持 windows.h。有替代品吗?我可以以某种方式使用 sleep 或 _khbit 吗?

0 投票
3 回答
94 浏览

c++ - 如何使您的程序重复递增,直到在 switch 语句中按下另一个键

我一直在研究其中一个蛇游戏,我有一个 switch 语句,说明如果按下一个键以通过递增/递减的方式移动蛇,但只有当我按住它时它才会这样做。我正在寻找一种方法来让蛇的位置不断增加,而无需用户持有该键。我在下面放了一个案例

0 投票
1 回答
158 浏览

c - C中使用kbhit控制机器人的BGI绘图

我一直在尝试 if 和 do while 语句的各种组合,但无法使其正常工作。我们使用 Visual Studio 2015 并使用 C 代码。代码的总体目标是使用 BGI 图形来模拟 2D 机器人(一个圆圈和一条线来指示方向)并使其执行各种任务。我被告知;

修改您的程序,以便您可以使用键盘控制您的机器人。

为此,您应该将初始速度初始化为 0,并在程序中添加适当的语句,以便根据按下的键来修改速度。例如,你可以

  • 按下 UP 键时增加固定常数 v
  • 按下 DOWN 键时将 v 减一固定常数
  • 当按下 RIGHT 键时减少一个固定常数的 w
  • 按下 LEFT 键时增加一个固定常数的 w
  • 使用另一个键停止机器人
0 投票
0 回答
262 浏览

c++ - 在 mac 上获得 kbhit() 等价物不是那么复杂吗?

我正在 Mac 上制作一个程序,但我需要一个等效的 kbhit() 并且我看到的所有程序都太复杂、太长,或者我无法在我的代码中使用它们,因为我不明白或者我不明白知道如何添加它。

请注意我有 curses.h 包括在内。

你能帮我解决这个问题吗?