#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
inpc
скрывает глобальное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."; } } }