2016-03-16 118 views
1

我需要做一个猜测游戏,程序生成一个随机数,用户必须猜出这个数字。如果用户在少于10次的猜测中猜出该数字,则该程序祝贺他们并让他们知道他们未满10次猜测。如果他们超过10个猜测,那么它让他们知道它是在10以上,等等。麻烦猜谜游戏

我面临的问题是,如果,例如,用户猜测3次尝试的数字,然后决定再次玩全新的其他数字,而这一次在8次尝试中猜出它,而不是仍然祝贺他们,因为它在10次尝试之下,它计数了前一次游戏的3次尝试。然后,这个计划会让他们告诉他们他们已经超过了10次,尽管他们不是。我不知道如何解决这个问题。我到目前为止所做的代码如下:

int main() 
{ 
    srand(time(0)); 
    int guess; 
    int number; 
    char selection = 'y'; 
    int numberOfGuesses=0; 

while(selection == 'y' || selection == 'Y') 
{ 
     number = rand() % 1000 + 1; 

     cout << "I have a number between 1 and 1000.\nCan you guess my number?\nPlease type your first guess: "; 
     cin >>guess; 

     do 
     { 
     if(number > guess) 
     { 
      cout << "Too low. Try again: " << endl; 
      cin >> guess; 
      numberOfGuesses++; 
     } 
     if (number < guess) 
     { 
      cout << "Too high. Try again: " << endl; 
      cin >> guess; 
      numberOfGuesses++; 
     } 

     } 

     while(number != guess); 

     if(numberOfGuesses < 9) 
     { 
      cout << "You guessed the number in less than 10 guesses!\n Would you like to play again (y or n)?"; 
      cin >> selection; 
     } 
     else if(numberOfGuesses > 9) 
     { 
      cout << "You guessed the number\n Would you like to play again (y or n)?"; 
      cin >> selection; 
     } 

     else if(numberOfGuesses == 9) 
     { 
      cout << "You guessed the number.\n Would you like to play again (y or n)?"; 
      cin >> selection; 
     } 

    } 

    return 0; 
} 
+0

凡'numberOfGuesses'被清零? – Vishal

+1

您可以使用'else if(numberOfGuesses> = 9)'来摆脱一些代码重复。 –

回答

2

问题是您没有重置计数器。 只要把int numberOfGuesses=0;while循环中:

while(selection == 'y' || selection == 'Y') 
{ 
    int numberOfGuesses=0; 
    .... 
} 
0

你需要每场比赛之前设置numberOfGuesses为0。程序首次启动时,程序只设置一次。

0

您不会在每轮结束后将numberOfGuesses重置为零。您可以使用几种方法之一来解决问题。

  1. 在第一while循环结束复位的numberOfGuesses到零的值。

    while(selection == 'y' || selection == 'Y') 
    { 
        ... 
        numberOfGuesses = 0; 
    } 
    
  2. 不要定义变量,直到while循环的开始。将其定义为第一条语句并将其初始化为零。

    while(selection == 'y' || selection == 'Y') 
    { 
        int numberOfGuesses = 0; 
        ... 
    }