问题标签 [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.
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...
c - 是否可以在 C 中编写自己的 kbhit()?
我在我的大学上了一门编程课,我正在研究一些程序。我想知道是否可以编写我自己的kbhit()
函数。如果可以看,如何kbhit()
编码。
目的是我需要知道我使用的函数是如何工作的。
python - PyCharm:msvcrt.kbhit() 和 msvcrt.getch() 不起作用?
我试图从 PyCharm 的控制台中读取一个字符(不按回车键),但无济于事。这些函数msvcrt.getch()
会停止代码,但不会对按键做出反应(甚至回车),并且msvcrt.kbhit()
始终返回 0。例如,此代码不打印任何内容:
我正在使用 Windows 7,PyCharm 3.4(在空闲时也是如此)。
怎么了?有没有其他方法可以在不输入的情况下读取输入?
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 的价格很高,所以我将不胜感激。这是当前代码:
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:
c++ - 将 GetAsyncKeyState() 重置为默认值
我正在学习使用和的组合kbhit()
来构建我的控制台游戏。GetAsyncKeyState()
getch()
我正在使用 Visual Studio 2010 Express,C/C++ 标头对我来说没问题。
兼容性问题(仅在 Windows 平台上运行)对我来说并不重要。
看看这个简单的代码:
问题是:任何虚拟键输入都会打印两次,而其他的运行正常。
我不知道是什么问题,但我找到了简单的解决方法。
我的猜测是GetAsyncKeyState()
没有正确清除为默认值
有什么解释吗?
还_getch()
为每个添加,kbhit()
并且GetAsyncKeyState()
是一种冗余,因此会降低可读性,还有其他选择吗?
c++ - 我可以在 OS X 上使用 windows.h 吗?
我正在学习计算机科学,我们在通话中与视觉工作室合作。我更喜欢使用我的 mac 并且不支持 windows.h。有替代品吗?我可以以某种方式使用 sleep 或 _khbit 吗?
c++ - 如何使您的程序重复递增,直到在 switch 语句中按下另一个键
我一直在研究其中一个蛇游戏,我有一个 switch 语句,说明如果按下一个键以通过递增/递减的方式移动蛇,但只有当我按住它时它才会这样做。我正在寻找一种方法来让蛇的位置不断增加,而无需用户持有该键。我在下面放了一个案例
c - C中使用kbhit控制机器人的BGI绘图
我一直在尝试 if 和 do while 语句的各种组合,但无法使其正常工作。我们使用 Visual Studio 2015 并使用 C 代码。代码的总体目标是使用 BGI 图形来模拟 2D 机器人(一个圆圈和一条线来指示方向)并使其执行各种任务。我被告知;
修改您的程序,以便您可以使用键盘控制您的机器人。
为此,您应该将初始速度初始化为 0,并在程序中添加适当的语句,以便根据按下的键来修改速度。例如,你可以
- 按下 UP 键时增加固定常数 v
- 按下 DOWN 键时将 v 减一固定常数
- 当按下 RIGHT 键时减少一个固定常数的 w
- 按下 LEFT 键时增加一个固定常数的 w
- 使用另一个键停止机器人
c++ - 在 mac 上获得 kbhit() 等价物不是那么复杂吗?
我正在 Mac 上制作一个程序,但我需要一个等效的 kbhit() 并且我看到的所有程序都太复杂、太长,或者我无法在我的代码中使用它们,因为我不明白或者我不明白知道如何添加它。
请注意我有 curses.h 包括在内。
你能帮我解决这个问题吗?