2012-07-13 192 views
5

可能重复:
Non-blocking getch(), ncurses非阻塞的getch()

林试图在标准控制台的俄罗斯方块游戏。我需要无阻塞的getch(),所以块可以在没有按任何键的情况下下降。如果没有按下按键,返回-1的函数将会很好,否则返回键代码。

如果有人能给我一个提示或一些链接,我会很高兴。

+0

您需要有一个无限循环并在其中处理_keypress_事件。 – SingerOfTheFall 2012-07-13 14:06:59

+0

@RobKennedy - dupe假定使用ncurses – 2012-07-13 14:10:28

+0

@kittyPL,你在使用什么操作系统和编译器?正如你从重复投票中推断的那样,'getch()'是一个非标准函数。具有该名称的函数在MS Windows API和名为“curses”的Unix库中提供。除了巧合地分享一个名字外,这些功能完全不相关。 – 2012-07-13 14:58:36

回答

7

它的操作系统,具体的,但你的图书馆可能有一个函数调用的kbhit()或类似的,将做到这

11

这正是你想要的东西:

int getch_noblock() { 
    if (_kbhit()) 
     return _getch(); 
    else 
     return -1; 
} 

基本上kbhit()做确定的工作如果按键。

假设Windows和Microsoft Visual C++。

+0

只需提及您需要#include 才能使用_kbhit() – lowtech 2017-08-04 13:23:46