в то время как l oop несколько утверждений - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть некоторые проблемы с зацикливанием. Я пытаюсь сделать несколько заявлений. Код ниже.

int MenuSelect () {
    cout << endl;
    cout << YELLOW  << "Enter 1 for info" << endl;
    cout << " " << endl;
    cout << "Enter 2 to Start" << endl;
    cout << " " << endl;
    cout << "Enter 3 to view settings" << endl;
    cout << " " << endl;
    cout << "Enter 4 to quit" << endl;

     int selected = 0;
    string input;
    cin >> input;
    if (stringstream(input) >> selected) {
        return selected;
    }
    else {
        return -1;
    }

    return 0;

};    

int Menu(int) {

    int selected {};
    while ((selected = MenuSelect()) == 1) {

        printmessage();


    }
    if (selected == 3) {

        cout << "Current Settings" << endl;

        somefunction();
    }

    else if (selected == 2) {

        cout << "Starting Game..... " << endl;
    }

    else if (selected == 4) {

        cout << "Exiting....." << endl;
        exit (3);
    }

    else {

        cout << "Invalid Entry" << endl;
        exit (3);
    }

    cout << "Below is the Deck of cards and you will get to choose 5 cards to play with. Choose wisely." << endl;

    return 0;

};

Таким образом, как вы можете видеть, пользователь может видеть меню, тогда операторы if и else выполняют свою работу. На данный момент мне удалось l oop выбрать первое меню, поэтому, если пользователь введет 1, оно напечатает сообщение, а затем l oop вернется в меню. То, что я хочу, это также l oop 3 - текущие настройки и, если пользователь вводит неправильный номер. Я пытался это сделать, но не могу этого сделать.

1 Ответ

1 голос
/ 15 апреля 2020

Вы, вероятно, хотите многократно читать пользовательский ввод и реагировать соответственно? Вы можете поместить все if в while:

int Menu(int) {

    int selected {};
    bool loop = true;

    while (loop) {
        selected = MenuSelect();

        if(selected == 1) {
            printmessage();
        }
        else if (selected == 3) {
            cout << "Current Settings" << endl;

            somefunction();
        }
        else if (selected == 2) {
            cout << "Starting Game..... " << endl;
        }
        else if (selected == 4) {
            cout << "Exiting....." << endl;
            loop = false;
        }
        else {
            cout << "Invalid Entry" << endl;
            loop = false;
        }
    }

    cout << "Below is the Deck of cards and you will get to choose 5 cards to play with. Choose wisely." << endl;

    return 0;

};

Использование переменной loop для выхода из while - это просто личное предпочтение, вы также можете иметь бесконечное число l oop

while(true)

и используйте break; для выхода из l oop или exit() для выхода из всей программы, как вы делаете сейчас.

...