Делай пока цикл не сломается - PullRequest
0 голосов
/ 06 мая 2018

Я делаю игру Златовласка. Если пользователь выберет неправильный ответ, он вернется к началу программы. Когда я пытаюсь выбрать любой вариант, он всегда возвращается к началу, включая правильный ответ, который равен 2. Я все еще новичок в c ++. Я не понимаю, почему это зацикливание на начало, если условие истинно, когда выбрано 2.

 #include "stdafx.h"
 #include <iostream>
 #include <string>
 using namespace std;




void FirstSet()
{
bool win = false;
string PName;
int choice;

int num1, num2, result;

do
{
    system("CLS");
    cout << " Please Enter Name \n";
    cin >> PName;


    cout << PName << " and the Three Bears\n\n ";


    cout << PName << " Walks up and sees 3 Doors, 1 Large Door, 1 Medium 
   Door and 1 Small Door. \n\n\n " << "Which Door do you want to Open?\n "
        << " 1 for The Large Door\n " << " 2 for the Medium Door\n " << " 3 
   for the small door\n ";
    cin >> choice;

    if (choice == '1')
    {
        cout << " The large door is too heavy it will not budge.\n "
            << " Please Try Again\n\n ";
        system("pause");

    }
    else if (choice == '2')
    {

        win = true;

    }
    else if (choice == '3') {
        cout << " The Door is too small you would get stuck.\n "
            << "Please Try Again\n\n";

        }
    } while (!win);
}





int main()
{
    FirstSet();

    system("pause");
    return 0;`

1 Ответ

0 голосов
/ 06 мая 2018

Причина, по которой ни одно из ваших сравнений не становится правдой, заключается в том, что вы читаете входные данные в переменную int. Затем вы сравниваете со значениями символов ascii 1,2 и 3, которые равны 49, 50 и 51 соответственно. Если вы измените строки if для сравнения непосредственно с целыми числами, это должно сработать:

if (choice == 1)
{
 ...
}
else if (choice == 2)
{
 ...
}
else if (choice == 3)
{
 ...
}

Хотя, для удобства чтения, а также во избежание таких случаев, я рекомендую использовать в этом случае операторы регистра переключателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...