C++ 非阻塞getch()

C++ 非阻塞getch(),c++,getch,C++,Getch,我正在尝试在标准控制台上制作俄罗斯方块游戏。我需要非阻塞getch(),这样块就可以在不按任何键的情况下掉落。如果没有按下键,函数返回-1会很好,否则会返回键代码。这是特定于操作系统的,但您的库可能有一个名为kbhit()或类似的函数来执行此操作。这正是您想要的: int getch_noblock() { if (_kbhit()) return _getch(); else return -1; } 基本上,kbhit()负责确定是否按下某个

我正在尝试在标准控制台上制作俄罗斯方块游戏。我需要非阻塞getch(),这样块就可以在不按任何键的情况下掉落。如果没有按下键,函数返回-1会很好,否则会返回键代码。

这是特定于操作系统的,但您的库可能有一个名为kbhit()或类似的函数来执行此操作。

这正是您想要的:

int getch_noblock() {
    if (_kbhit())
        return _getch();
    else
        return -1;
}
基本上,
kbhit()
负责确定是否按下某个键


假设Windows和微软Visual C++。

需要有一个无限循环并在其中处理按键事件。ncurses@kittyPL,您使用的是什么操作系统和编译器?从重复投票中可以推断,
getch()
是一个非标准函数。MS Windows API和名为“curses”的Unix库中提供了具有该名称的函数。除了巧合地共享一个名称之外,这些函数是完全不相关的。这不是重复的。这个关于非阻塞getch的问题和重复的问题是关于阻塞getch的(OP希望它在非阻塞的地方阻塞,因为库的使用不正确,这几乎不是一个解决方案)。只需提到,您需要#include才能使用_kbhit()