Перейти не работает правильно 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;
}
}