Перейти не работает правильно C++

Я недавно начал изучать C++, и я просто проверяю то, что я знаю, делая ужасную маленькую игру.

Я хочу вернуться назад в своем коде, поэтому я узнал о состоянии goto. Вот мой код (не все, только бит goto)

moving:

if(moveChoice == "Forward"){
    cout << "You moved Forward" << endl;
    moveChoice = "";
    if(firstTargetRand == 2){
        cout << "You encountered a tree!" << endl;
    }if(firstTargetRand != 2){
        cout << "goto init" << endl;
        goto moving;
    }
}

Теперь вызывается "goto moving" (проверено cout goto init), но это не работает. Я знаю, что это действительно глупая ошибка, но я не вижу в этом ничего плохого

1 ответ

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

Ваша проблема заключается в том, что вы проверяете, находится ли moveChoice == "Forward", затем устанавливаете moveChoice на "", затем возвращаетесь и затем moveChoice == "Forward" всегда возвращает 0.

Если вы действительно хотите перейти, попробуйте это:

if(moveChoice == "Forward"){
    moving:
    cout << "You moved Forward" << endl;
    moveChoice = "";
    if(firstTargetRand == 2){
        cout << "You encountered a tree!" << endl;
    }else{
        cout << "goto init" << endl;
        goto moving;
    }
}

Если вы не очень пристрастны к goto, попробуйте это:

while(moveChoice=="Forward"){
    cout << "You moved Forward" << end1;
    if(firstTargetRand == 2){
        cout << "You encountered a tree!" << end1;
        moveChoice = "";
    }else{
        cout << "goto init" << end1;
    }
}
Другие вопросы по тегам