所以我做了一个小游戏(控制台应用程序),最后我想显示一个最终游戏屏幕。如果玩家在尝试移动到某个地方时死亡,那么他们将处于按下键的中间。我使用_getch()暂停控制台的解决方案将捕获该键并立即关闭控制台,而不会给玩家提供任何机会查看发生的情况。它使游戏看起来像崩溃了。
我需要一些基于时间的内容,它几秒钟不会对任何按键做出反应,但是随后会有所反应。
int main()
{
//game loop is here somewhere, exits when player is dead
if (player.isDead())
{
displayGameOverScreen();
return 0;
}
}
void displayGameOverScreen()
{
std::cout << "You died.";
_getch();//if player is still pressing keys
//console instantly closes
}
我假设您在Windows下工作,因此如果在用户直接按下保留的按钮(例如'Q'和'R')时关闭窗口,则可以将Sleep(2000)置于2秒钟的睡眠或更好的解决方案如果是这种情况,请尝试重新启动游戏,让游戏重新初始化自身并在displayGameOverScreen()之后删除return语句。
睡眠问题,当用户在睡眠状态下按下某个键时,该键将在睡眠完成后立即生效。
在displayGameOverScreen()之后添加系统(“暂停”);屏幕应该当场冻结,并且不会关闭。如果那不起作用,请添加Sleep(4000)而不是system(“ pause”),它将在关闭前停留4秒钟。请记住,您应该添加#include