heu所以我正在使用上面提到的Windows功能,幸运的是Windows 2000及以上,但是在控制台上制作游戏我遇到了一个问题:只要按下一个键,控制台就会通过如果没有再次按下某个键,则使用kbhit()函数...
有什么办法可以清除键盘按键缓冲区,这样你就无法在没有新按键的情况下通过kbhit了吗?
如果需要新的lib下载,我想我可以...但我希望以Windows标准方式进行!
谢谢!
答案 0 :(得分:2)
有人告诉你,kbhit()
是一个Windows功能,误导了你。 kbhit()
, getch()
and their relatives are actually part of the (C language bindings to the) MS-DOS API.他们在OS / 2,Win32和其他C / C ++编译器的运行时库中的存在只是 MS / PC / DR-DOS程序的移植辅助。库将它们映射到用于访问键盘的任何 native 机制(如果有的话),并且通常仅以正确的方式用于TUI,而不是GUI,应用程序访问键盘。
如果您正在编写新的TUI应用程序,请不要使用MS-DOS API。为您正在定位的平台使用正确的原生API,例如Win32 Console API或OS/2 Console API或POSIX General Terminal Interface(通过ncurses或其他类似)。
当你这样做时,你会阅读他们的文档,并了解如何在进行非破坏性的“偷看”之后执行键盘输入的破坏性“获取”。或者确实如何完全刷新缓冲区,如果你想做的话。
答案 1 :(得分:1)
明显的选择是FlushConsoleInputBuffer