С++. Как к этой этой программе добавить подсказки?

Предусмотреть 3 подсказки: их всего 3 за всю игру и ИХ можно взять на любом вопросе.

#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int a;
    int b;
    int n = 1;
    int m = 50;
    int i;
    int f = 1;
    ///////////////////////
    cout<<" Вопрос\t"<<n<<"\t" <<m<<"рублей" "\tСтолица Франции" << endl;
    cout << "1. Милан 2. Ницца 3. Париж" << endl;
    cin >> a;
    switch (a)
    {
        case 3:
        {
            n++;
            cout << m << "рублей или игра(1или2)"<<endl;
            cin >> b;
            switch (b)
            {
                case 1:
                    cout << "Вы выиграли " << m << "рублей" << endl;
                    return 0;
            }

            cout << "следующий вопрос:" << endl;

            break;      }
        default:
        {
            cout << "неверно!" << endl;
            return 0;
        }
    }
    m+=50;
    //////////////////////////////////////////////////////////////////////////////////////////// вопрос 2
    cout <<"Вопрос\t"<<n<<":"<< "\tКто написал \"Журавлиный крик\"?" << endl;
    cout << "1. Быков; 2. Короткевич; 3.Колос " << endl;

    cin >> a;
    if (a == 1)
    {
        n++;
        cout << m << "рублей или игра(1или2)" << endl;
        cin >> b;
        switch (b)
        {
            case 1:
                cout << "Вы выиграли " << m << "рублей" << endl;
                return 0;
        }
    }
    else
        return 0;
    m += 50;
    ///////////////////////////////////////////////////////////////////////////////////////////// вопрос 3
    cout <<"Вопрос\t"<<n <<"\tв чем измеряется ЭДС?" << endl;
    cout << "1. Вольт; 2. Тесла; 3. Фарад " << endl;
    cin >> a;
    if (a == 1)
    {
        n++;
        cout << m << "рублей или игра(1или2)" << endl;
        cin >> b;
        switch (b)
        {
            case 1:
                cout << "Вы выиграли " << m << "рублей" << endl;
                return 0;
        }
    }
    else
        return 0;
    m += 50;
    ///////////////////////////////////////////////////////////////////////////////////////////// вопрос 4
    cout <<"вопрос"<<n<< "Богиня красоты" << endl;
    cout << "1. Афина; 2. Деметра; 3. Афродита " << endl;
    cin >> a;
    if (a == 3)
    {
        n++;
        cout << m << "рублей или игра(1или2)" << endl;
        cin >> b;
        switch (b)
        {
            case 1:
                cout << "Вы выиграли " << m << "рублей" << endl;
                return 0;
        }
    }
    else
        return 0;
    m += 50;
    ////////////////////////////////////////////////////////////////////////////////////////// вопрос 5
    cout << "вопрос" << n << "Какой врач первым в истории русской медицины применил гипсовую повязку?" << endl;
    cout << "1. Субботин; 2. Пирогов; 3. Боткин " << endl;
    cin >> a;
    if (a == 2)
    {
        n++;
        cout << m << "рублей или игра(1или2)" << endl;
        cin >> b;
        switch (b)
        {
            case 1:
                cout << "Вы выиграли " << m << "рублей" << endl;
                return 0;
        }
    }
    else
        return 0;
    m += 50;
    /////////////////////////////////////////////////////////////////////////////////////////// вопрос 6
    cout << "вопрос" << n << "Какой белорусский исполнитель добился самых высоких результатов на Евровидении?" << endl;
    cout << "1. Алехно; 2. Колдун; 3. Ланская " << endl;
    cin >> a;
    if (a == 2)
    {
        cout << m << "рублей или игра(1или2)" << endl;
        cin >> b;
        switch (b)
        {
            case 1:
                cout << "Вы выиграли " << m << "рублей" << endl;
                return 0;
        }
    }
    else
        return 0;
}

Ответы (1 шт):

Автор решения: Стас

1) Я довольно сильно поправил форматирование чтобы все вопросы выглядели одинаково.

2) Убрал switch (а зачем он там нужен, если проверяет только 1 значение? Для этого есть if).

3) Сделал _getch() вместо cin чтобы не нужно было нажимать Enter после выбора варианта. Теперь вместо цифр вариантов используются коды их клавиш (без нумпада)

4)Вынес проверку правильности ответа и отправление подсказок в отдельную функцию чтобы сократить код. Если пользователь использует все 3 подсказки и попробует взять ещё одну - игра завершится.

В функцию передаётся 4 аргумента: код кнопки правильного ответа, кол-во оставшихся подсказок, кол-во денег, правильный ответ текстом для вывода подсказки.

#include <iostream>
#include <conio.h>
using namespace std;

int check(int ans, int* tip, int m, string correct){
    bool q_pressed = false;
    setlocale(LC_ALL, "Russian");
    int key = _getch();
    if (key == 113 or key == 81 or key == 169 or key == 137){q_pressed = true;}

    if (!(key == ans) && !q_pressed){
        cout << "Неверно!";
        return 0;
    }
    else{
        if (q_pressed){
            if(*tip == 0){cout << "У вас больше нет подсказок. Игра окончена!"; return 0;}
            *tip -= 1;
            cout << "Правильный ответ: " << correct << endl;
            cout << "У вас осталось " << *tip << " подсказок" << endl;
        }
        else{
            cout << "Верно!" << endl;
            cout <<"Забрать " << m << " рублей(1) или продолжить игру(2)"<<endl;
            key = _getch();
            if (key == 49){
                cout << "Вы выиграли " << m << " рублей. Спасибо за игру!" << endl;
                return 0;
            }
        }
    }
    return 1;
}



int main()
{
    setlocale(LC_ALL, "Russian");
    int n = 1, m = 50, tip = 3, checker;
    cout << "Вы можете запросить подсказку нажатием на кнопку q.\nВ начале игры у вас есть 3 подсказки";

    // Вопрос 1
    cout<<"\nВопрос "<< n << ":" << "\nСтолица Франции" << endl;
    cout << "1. Милан 2. Ницца 3. Париж" << endl;
    checker = check(51, &tip, m, "Париж");
    if (checker == 0){return 0;}
    n++;
    m+=50;

    // Вопрос 2
    cout << endl << "Вопрос "<<n<<":"<< "\nКто написал \"Журавлиный крик\"?" << endl;
    cout << "1. Быков 2. Короткевич 3.Колос " << endl;

    checker = check(49, &tip, m, "Быков");
    if (checker == 0){return 0;}
    n++;
    m += 50;

    // Вопрос 3
    cout << endl << "Вопрос "<< n <<":"<<"\nВ чем измеряется ЭДС?" << endl;
    cout << "1. Вольт 2. Тесла 3. Фарад " << endl;

    checker = check(49, &tip, m, "Вольт");
    if (checker == 0){return 0;}
    n++;
    m += 50;

    // Вопрос 4
    cout <<"Вопрос "<<n <<":"<< "\nБогиня красоты это" << endl;
    cout << "1. Афина 2. Деметра 3. Афродита " << endl;

    checker = check(51, &tip, m, "Афродита");
    if (checker == 0){return 0;}
    n++;
    m += 50;

    // Вопрос 5
    cout << "Вопрос " << n <<":"<< "\nКакой врач первым в истории русской медицины применил гипсовую повязку?" << endl;
    cout << "1. Субботин 2. Пирогов 3. Боткин " << endl;

    checker = check(50, &tip, m, "Пирогов");
    if (checker == 0){return 0;}
    n++;
    m += 50;

    // Вопрос 6
    cout << "Вопрос " << n <<":"<< "\nКакой белорусский исполнитель добился самых высоких результатов на Евровидении?" << endl;
    cout << "1. Алехно 2. Колдун 3. Ланская " << endl;

    checker = check(50, &tip, m, "Колдун");
    if (checker == 0){return 0;}

    cout << endl << "Спасибо за то, что играли! Вы показали отличные результаты и выиграли " << m << " рублей!" << endl;
    system("pause");
    return 0;
}
→ Ссылка