2014-11-09 2 views
0

참고 : 이것은 숙제 임무입니다.사용자가 C++로 말하면 루프를 일찍 끝내는 방법

저는 돼지 게임을하는 프로그램을 만들려고합니다! 내가 (코드 참조) 다음과 같은 문제에 도달 할 때까지

1. First to get 100 GAME POINTS is the victor. 2. On your turn, you roll a dice. If you get a 1 at any roll, you end your turn and add 0 to your GAME SCORE. 3. If you roll any value other than a 1, you have the option to HOLD or PLAY. If you PLAY, your roll is added to your TURN SCORE and you roll again. If you HOLD, your TURN SCORE is added to your GAME SCORE and the turn passes to the computer.

이 게임은 아주 쉽게 따라오고있다 :

int player(){ 
    char PlayAgain = 'Y'; 
    int turn_score = 0; 
    while (PlayAgain != 'N' || PlayAgain != 'n'){ 
     int dice; 

     srand(time(NULL)); 
     dice = rand() % 6 + 1; 
     turn_score = turn_score + dice; 

     if (dice != 1){ 
      cout << "You rolled a " << dice << "! Would you like to roll again? [Y/N]: "; 
      cin >> PlayAgain; 
      if (PlayAgain == 'N' || PlayAgain == 'n'){ 
       /*END TURN AND return turn_score;*/ 
      } 
     } 
     if (dice == 1){ 
      cout << endl << "Oops! You rolled a 1! Your turn is ended, and you add nothing to your score.\n"; 
      system("PAUSE"); 
      /*END TURN, NO SCORE ADDED*/ 
     } 
    } 
} 

가 어떻게 프로그램을 가질 수 돼지는 다음과 같은 규칙을 가진 게임이다 루프를 조기에 끝내십시오 (HOLDS 또는 주사위 == 1 인 경우). 적절한 값을 반환합니다 (HOLD이면 turn_score를 반환하고, 그렇지 않으면 0을 반환). [두 개의 참고 섹션 참조]

+0

조건이 충족되면 'break' 문을 사용하십시오. – Ares

+0

@ Zaphod 그러면 'while'의 상황에 따라 값을 반환 할 수 없습니다. 그렇습니까? 그렇지 않다면, 휴식이 내가 필요한 것을 성취하지 못합니다. –

+0

더 열심히 시도하십시오 :-) – Gabriel

답변

0

코드를 수정하고 여기서 실제로 필요한 것이 무엇인지 명확하게 설명하고자합니다. 이제까지 break; 들어


는 'A'를 누를 때까지 우리는 사용자로부터 입력을 복용 유지, 당신의 프로그램이 사용자의 입력을 취하고 다음 코드를 참조 간단한 예제를 이해 statement.Let

char var; 
while(true) 
{ 
cin>>var; 
if(var=='A') break; 
} 

지금이 프로그램에, while 루프는 true로 설정하고 실행하고 사용자의 입력을 복용 계속되며, 사용자가 'A'를 입력 할 때까지 if 문이 실행되지 않습니다. 그리고 'A'가 입력으로 주어지면, breakwhile 루프를 제어합니다.

0

루프 내에서 '사례'진술 (사례에 따라 적절한 값을 가짐)은 어떻습니까? 이렇게하면 루프와 함수가 모두 중단되지만 필요한 값을 반환합니다.

1

break을 사용하면 루프에서 벗어날 수 있습니다. 당신은 당신이 "올바른 값"을 반환 할 말을하는지 때문에 당신은 그런 일해야 : 처음에

을 경우 절

if (PlayAgain == 'N' || PlayAgain == 'n'){ 
      /**Game-Specific logic here**/ 
      return turn_score 
     } 

와 두 번째에 :

if (dice == 1){ 
     cout << endl << "Oops! You rolled a 1! Your turn is ended, and you add nothing to your score.\n"; 
     /**Game-Specific logic here**/ 
     cin.get(); 
     return turn_score; 
    } 

return 문은 함수의 끝에 있어야 할 필요는 없으며 둘 이상의 return 문이 같은 함수 내에 공존 할 수 있습니다.

+0

이것은 의미가 있습니다. 나는'return'이 반복문 안에있을 수 없다고 생각합니다. 그래서,'return' 함수가 즉시 종료합니까? –

+0

예. 그러나 휴식을 통해 루프를 멈출 수도 있다는 것을 명심하십시오. 때로는 함수를 종료하지 않고 루프를 끝내기를 원할 때가 있습니다. – dimlucas

관련 문제