Ждите ввода во время работы - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать игру с консольным приложением c ++

Моя цель - запустить мой do .. while() во время ожидания ответа.Он должен отображать «..O ..» до тех пор, пока не будет нажата клавиша «a», а затем вместо «.O ...» или когда нажата клавиша «d», покажет «... O».Моя проблема в том, что я не могу использовать cin или getline, не останавливая приложение для ожидания ввода.

Так есть ли способ сделать что-то вроде цикла, где значение * 1008 не возвращает значение* через 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 голосов
/ 06 декабря 2018

В вашей задаче, если вход не предоставлен, приложение должно быть в исходном положении, поэтому с некоторым переупорядочением

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;
}
...