太长不看版:
_kbhit() and getch() 包含在conio.h中。
conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。
_kbhit() and getch() 为控制台函数,仅在控制台程序中可用,在窗口程序中不能用。
前因后果:
参考b站视频,练习用C++ EasyX 写小游戏时,发现:
控制台程序无法获取键盘消息。因为很多视频都是早几年做的,从 Windows 诞生之日起,其默认终端一直是 Windows 控制台主机 conhost.exe。但是目前Windows 11 的所有命令行应用程序都将在 Windows Terminal 中自动打开。
这就使得编写控制台程序时,会出现两个窗口,一个是控制台,一个是EasyX绘制的窗口。当使用_kbhit()和getch()获取键盘消息的时候,必须是控制台获得焦点的时候,才能获得键盘消息,在EasyX绘制的窗口中无法直接获得消息。
参考了Introduction to C++ Game Development | TONY'S STUDIO(EasyX新手宝藏)
把程序改为窗口程序,也因此所有控制台函数不再有效。