猜谜游戏有麻烦

Trouble with guessing game

本文关键字:麻烦 游戏      更新时间:2023-10-16

我需要做一个猜谜游戏,程序生成一个随机数,用户必须猜出这个数字。如果用户猜出的数字少于 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 numbern 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;
 }

问题是您没有重置计数器。只需将int numberOfGuesses=0;放在while循环中:

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

在每场比赛前将numberOfGuesses设置为 0。您的程序仅在程序首次启动时设置一次。

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

  1. 在第一个while循环结束时将 numberOfGuesses 的值重置为零。

    while(selection == 'y' || selection == 'Y')
    {
       ...
       numberOfGuesses = 0;
    }
    
  2. 在该while循环开始之前不要定义变量。将其定义为第一个语句并将其初始化为零。

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