Игра угадай число и switch

107
07 августа 2019, 16:00

Всем здравствуйте! Есть вот такой кусок кода. В конце кода пользователю предлагаю сделать выбор: играть дальше или отказаться. Не могу понять следующее: Как через switch сделать так, чтоб при нажатии на 1 - игра начиналась заново, при нажатии на 2 - заканчивалась, а при любом другом числе не равно 1 и 2 выдавала ошибку и просила снова ввести 1 или 2, ну и соответственно при вводе 1 или 2 выполняла вышеописанные задачи.

Пробовал заворачивать все в функцию - работает криво.

Спасибо за уделённое время!:)

int main()
{
    srand(time(0));
    int random = 1 + rand() % 1001;
    int userNumber;
    int userChose;
    cout << "I randomed some number from 1 to 1000." << endl;
    cout << "Please, try to catch it!" << endl;
    cout << "Good luck!" << endl << endl;
    cout << "Please enter your number: ";
    cin >> userNumber;
    cout << endl;
    while (userNumber != random)
    {
        if (userNumber < random) {
            cout << "Your number less then i randomed;" << endl;
            cout << "Please, enter your number again: ";
            cin >> userNumber;
            cout << endl;
        }
        if (userNumber > random) {
            cout << "Your number is bigger then i randomed" << endl;
            cout << "Please, enter your number again: ";
            cin >> userNumber;
            cout << endl;
        }
        if (userNumber == random) {
            cout << "You got it!" << endl << endl;
            cout << "If you want to continue the game enter 1" << endl;
            cout << "If you want to exit the game enter 2" << endl;
            cout << "Your chose: ";
            cin >> userChose;
            cout << endl;
        }
    }

        return 0;
}
Answer 1

Поместите игру в отдельную функцию, скажем, game().

Тогда ваш код будет иметь примерно такой вид:

for(int code; cin >> code; cout << "1 - еще раз, 2 - выход")
{
    if (code == 1) game();
    else if (code == 2) break;
    cout << "Неверный ввод, повторите ";
}

Ну, или воспользуйтесь switch-case, только тогда простого break для выхода будет мало:

for(int code; cin >> code; cout << "1 - еще раз, 2 - выход")
{
    bool quit = false;
    switch(code)
    {
    case 1: game(); break;
    case 2: quit = true; break;
    default:
        cout << "Неверный ввод, повторите ";
    }
    if (quit) break;
}
READ ALSO
Сборка и подключение библиотеки DCMTK Qt C++ [закрыт]

Сборка и подключение библиотеки DCMTK Qt C++ [закрыт]

Есть библиотека для работы с файлами DICOM(специфические медицинские изображения) - https://dicomoffis

102
QDateTime не определяет шаблон

QDateTime не определяет шаблон

Имеется два шаблона:

101
Проблема с сигналами между QML и С++

Проблема с сигналами между QML и С++

Проблема состоит в том, как отследить сигнал при смене песни в QMediaPlayer::durationChanged и это значение установить в Slider через свойство to?

97
Qt Signal при добавлении нового окна в приложении

Qt Signal при добавлении нового окна в приложении

Существует ли возможность в Qt посредством SIGNAL отследить, если было добавлено новое QWindow окно? Необходимо, чтобы определённый объект следил...

123