heu 所以我正在使用上述 Windows 功能,幸运的是,这些功能适用于 Windows 2000 及更高版本,但在控制台上制作游戏时我遇到了一个问题:只要按下一个键,控制台就会通过 kbhit( ) 功能,无论是否再次按下某个键...
有什么方法可以清除键盘按键缓冲区,这样您就无法在没有新按键的情况下通过 kbhit?
如果需要新的库下载,我想我可以......但我希望有一种 Windows 标准方式!
谢谢!!
谁告诉你这kbhit()
是一个 Windows 功能,你是在误导你。 kbhit()
,getch()
它们的亲戚实际上是(C 语言绑定到)MS-DOS API 的一部分。 它们出现在 OS/2、Win32 和其他 C/C++ 编译器的运行时库中只是为了作为 MS/PC/DR-DOS 程序的移植辅助工具。该库将它们映射到现有的任何用于访问键盘的本机机制(如果有的话),并且通常仅以正确的方式使 TUI(而不是 GUI)应用程序访问键盘。
如果您正在编写一个新的 TUI 应用程序,请不要使用 MS-DOS API。为您的目标平台使用适当的本机 API,例如Win32 控制台 API或OS/2 控制台 API,或POSIX 通用终端接口(通过 ncurses 等)。
当您这样做时,您将阅读他们的文档并了解如何在进行非破坏性“窥视”之后对键盘输入执行破坏性“获取”。或者如果这是您想要做的,实际上如何完全刷新缓冲区。
显而易见的选择是FlushConsoleInputBuffer