跑步时等待输入

时间:2018-12-06 14:36:29

标签: c++ game-engine iostream cin

我正在尝试使用c ++控制台应用程序创建游戏

我的目标是让我的do .. while()在等待响应的同时运行。 它应该一直显示“ ..O ..”,直到按下“ a”键,然后改为显示“ .O ...”,或者当按下“ d”键时显示“ ... O。”。 我的问题是我不能在不暂停应用程序等待输入的情况下使用cingetline

是否有一种方法可以执行类似循环的操作,如果cin在10毫秒内未返回值,则会显示“ ..O ..”? 我不想让程序继续等待输入,也许就像每个Sleep(10)之间的cin ...

我对外观的看法:

void out()
{
    int x;
    string key;
    do {
        cin >> key;
        //insert here something like break; that will
        //stop waiting for input after 10 milliseconds.
        system("cls");
        if (key != "a" && key != "d") {
            cout << "..O..";
        }
        else {
            if (key == "a") {
                cout << ".O..." << endl;
            }
            else {
                if (key == "d") {
                    cout << "...O." << endl;
                }
                else {
                    cout << "..O..";
                }
            }
        }
    } while (x == 0);
    x = 0;
}

1 个答案:

答案 0 :(得分:0)

在您的问题中,如果未提供任何输入,则应用必须处于初始位置,因此需要重新排序

void out()
{
    int x;
    string key;
    do {
        system("cls");
        cout << "..O..";

        cin >> key; //output will remain same as long as no input

        system("cls");
        if (key == "a") {
           cout << ".O..." << endl;
        }
        else if (key == "d") {
           cout << "...O." << endl;
        }

    } while (x == 0);
    x = 0;
}