Новичку нужна помощь в использовании функций в игре камень, ножницы, бумага

#c

Вопрос:

Предполагается, что мы должны кодировать игру в камень, ножницы, бумагу, используя функции. Я выполнил все, кроме определения победителя и показа этого. «Результат пустоты» — вот с чем у меня проблемы.

В настоящее время я могу выбрать ножницы-камень для бумаги, и компьютер отображает выбор пользователя и выбор компьютера. Вот мой текущий код:

 #include lt;iostreamgt; #include lt;ctimegt; #include lt;cstdlibgt; using namespace std;  int user(int); int pc(int); int result(int); string userChoice, pcChoice; int userNum, pcNum; void result(int, int);  int main() {  user(userNum);  pc(pcNum);    cout lt;lt; "You chose " lt;lt; userChoice lt;lt; endl lt;lt; "They chose " lt;lt; pcChoice;  return 0;    void result(); }  int user(int userNum) {  cout lt;lt; "Choose rock, paper, or scissors: ";  cin gt;gt; userChoice;    if(userChoice == "rock")  {  userNum = 1;  }  else if(userChoice == "paper")  {  userNum = 2;  }  else if(userChoice == "scissors")  {  userNum = 3;  }  else  {  cout lt;lt; "Input invalid. Run again and enter rock, paper, or scissors." lt;lt; endl;    exit(0);  }    return userNum; }  int pc(int pcNum) {  srand(time(0));  pcNum = (rand() % 3   1);    if (pcNum == 1)  {  pcChoice = "rock";  }  else if (pcNum == 2)  {  pcChoice = "paper";  }  else if (pcNum == 3)  {  pcChoice = "scissors";  }    return pcNum; }  void result(int pcNum, int userNum) {  if (pcNum == 1)  {  if (userNum == 1)  {  cout lt;lt; "Tie. Play again.";  }  else if (userNum == 2)  {  cout lt;lt; "You win. Paper covers rock.";  }  else if (userNum == 3)  {  cout lt;lt; "You lose. Rock breaks scissors.";  }  }  else if (pcNum == 2)  {  if (userNum == 1)  {  cout lt;lt; "You lose. Paper covers rock.";  }  else if (userNum == 2)  {  cout lt;lt; "Tie. Play again.";  }  else if (userNum == 3)  {  cout lt;lt; "You win. Scissors cut paper.";  }  }  else if (pcNum == 3)  {  if (userNum == 1)  {  cout lt;lt; "You win. Rock breaks scissors.";  }  else if (userNum == 2)  {  cout lt;lt; "You lose. Scissors cut paper";  }  else if (userNum == 3)  {  cout lt;lt; "Tie. Play again.";  }  } }  

Комментарии:

1. Примечание: pcNum in pc скрывает глобальное pcNum значение, и вы не используете возвращаемое значение. То же самое для userNum user В. Было бы лучше избегать глобальных переменных.

Ответ №1:

 void result();  

Это объявление функции, а не вызов функции.

Вы не можете объявить какую-либо функцию в функции. Кроме того, вы должны объявить эту функцию. Итак, я думаю, что ты хочешь, чтобы:

 result(userNum, pcNum);  

Ответ №2:

Пожалуйста, прочтите комментарии, помеченные как // CHANGE HERE

 #include lt;iostreamgt; #include lt;ctimegt; #include lt;cstdlibgt; using namespace std;  // CHANGE HERE: // 1. Changed function signatures // 2. Removed unnecessary global variables // 3. Removed unnecessary functions  int user(); int pc(); void result(int, int);  string userChoice, pcChoice;  int main() {  // CHANGE HERE: added local variables to store return values  int userNum = user();  int pcNum = pc();    // CHANGE HERE: added endl  cout lt;lt; "You chose " lt;lt; userChoice lt;lt; endl lt;lt; "They chose " lt;lt; pcChoice lt;lt; endl;    // CHANGE HERE: call result function here  result(pcNum, userNum);  return 0; }  int user() {  cout lt;lt; "Choose rock, paper, or scissors: ";  cin gt;gt; userChoice;    if(userChoice == "rock")  {  return 1;  }  else if(userChoice == "paper")  {  return 2;  }  else if(userChoice == "scissors")  {  return 3;  }    cout lt;lt; "Input invalid. Run again and enter rock, paper, or scissors." lt;lt; endl;  exit(0); }  int pc() {  srand(time(0));  // CHANGE HERE: make pcNum local variable  int pcNum = (rand() % 3   1);    if (pcNum == 1)  {  pcChoice = "rock";  }  else if (pcNum == 2)  {  pcChoice = "paper";  }  else if (pcNum == 3)  {  pcChoice = "scissors";  }    return pcNum; }  void result(int pcNum, int userNum) {  if (pcNum == 1)  {  if (userNum == 1)  {  cout lt;lt; "Tie. Play again.";  }  else if (userNum == 2)  {  cout lt;lt; "You win. Paper covers rock.";  }  else if (userNum == 3)  {  cout lt;lt; "You lose. Rock breaks scissors.";  }  }  else if (pcNum == 2)  {  if (userNum == 1)  {  cout lt;lt; "You lose. Paper covers rock.";  }  else if (userNum == 2)  {  cout lt;lt; "Tie. Play again.";  }  else if (userNum == 3)  {  cout lt;lt; "You win. Scissors cut paper.";  }  }  else if (pcNum == 3)  {  if (userNum == 1)  {  cout lt;lt; "You win. Rock breaks scissors.";  }  else if (userNum == 2)  {  cout lt;lt; "You lose. Scissors cut paper";  }  else if (userNum == 3)  {  cout lt;lt; "Tie. Play again.";  }  } }