如何在基于时间的C ++中获得类似GETCH()的行为?

问题描述 投票:0回答:1

所以我做了一个小游戏(控制台应用程序),最后我想显示一个最终游戏屏幕。如果玩家在尝试移动到某个地方时死亡,那么他们将处于按下键的中间。我使用_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
}
c++ visual-studio
1个回答
1
投票

我假设您在Windows下工作,因此如果在用户直接按下保留的按钮(例如'Q'和'R')时关闭窗口,则可以将Sleep(2000)置于2秒钟的睡眠或更好的解决方案如果是这种情况,请尝试重新启动游戏,让游戏重新初始化自身并在displayGameOverScreen()之后删除return语句。

睡眠问题,当用户在睡眠状态下按下某个键时,该键将在睡眠完成后立即生效。


0
投票

在displayGameOverScreen()之后添加系统(“暂停”);屏幕应该当场冻结,并且不会关闭。如果那不起作用,请添加Sleep(4000)而不是system(“ pause”),它将在关闭前停留4秒钟。请记住,您应该添加#include

© www.soinside.com 2019 - 2024. All rights reserved.