2014-07-14 3 views
0

저는 최근에 C++를 배우기 시작했고, 제가 끔찍한 작은 게임을 만들어서 알고있는 것을 테스트하고 있습니다.고토가 제대로 작동하지 않습니다. C++

내 코드로 돌아가고 싶기 때문에 고토 (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; 
    } 
} 

이제 "고토 이동"이라는지고 (cout을 고토 초기화로 확인)하지만이 작동하지 않습니다. 나는 이것이 정말로 어리석은 실수 일 수 있다는 것을 알고 있지만, 아무 것도 잘못 볼 수 없다는 것을 알고있다.

+1

, 당신이 틀렸다 모두 내가 당신에게 말할 수있다 ,'goto'가 작동 중입니다. 벌금. 당신이하고있는 일을 모른 채 당신이 틀렸다고 말할 수는 없습니다. – Blindy

+4

제 생각에'moveChoice'는'char *'타입입니다. 첫 번째 문제를 해결하기 위해 그것을'std :: string'으로 변경하십시오. 두 번째 문제는'goto'를 배운다는 것입니다 ;-) – dasblinkenlight

+8

은 goto 's없이 코드를 작성하는 법을 더 잘 배울 것입니다. 유효한 사용 사례가 거의 없으며 이는 하나의 사례가 아닙니다. –

답변

4

음, 우선 나는 goto가 거의 모든 용도에 대해 눈살을 찌푸리게하고, 주석 말하자면 이것은 주요한 루프 재료입니다.

귀하의 문제는 당신이 moveChoice은 "앞으로"== 경우 다음 "에 moveChoice 설정, 확인하는 것입니다"다음 다음, 다시 가고, 그리고 moveChoice == "앞으로"항상 당신이 정말로 원하는 경우 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; 
    } 
} 

,이 시도 : 제시된 정보의 양으로

while(moveChoice=="Forward"){ 
    cout << "You moved Forward" << end1; 
    if(firstTargetRand == 2){ 
     cout << "You encountered a tree!" << end1; 
     moveChoice = ""; 
    }else{ 
     cout << "goto init" << end1; 
    } 
} 
+0

답변 해 주셔서 감사합니다! 방금 다른 방법으로 수정했습니다 (그래도 사용하는 동안). 그러나 이것은 훨씬 좋아 보입니다 ^.^감사합니다! – user3532547

+0

while() 예제에서 else {}의'goto moving; '를 제거하지 않았습니다. – drescherjm

관련 문제