Программа не компилируется из-за ошибки в функции возврата значения. Это говорит необъявленный идентификатор - PullRequest
0 голосов
/ 20 октября 2019

Я пишу программу для бумажных ножниц, в которой есть пользовательский плеер и компьютерный плеер. Я считаю, что все в порядке до функции возврата значения bool. Нужно взять два аргумента (выбор компьютера, выбор игрока) и посмотреть, равны ли они выводу «Tie». Однако я получаю сообщение об ошибке, в котором говорится о необъявленных идентификаторах для моих двух аргументов.

Я попытался изменить его на функцию int вместо bool. и мои операторы bool находятся в main, но это не сработало

  #include <iostream>
  #include <iomanip>
  #include <string>
  #include <cstdlib>
  #include <ctime>
  #include <cmath>

 using namespace std;

int getComputerChoice();
int getPlayerChoice();
bool isTie (int, int);

 int main()
  {

char choice;
int compChoice;
int plaChoice;


do
{
    cout << "ROCK PAPER SCISSORS MENU" << endl;
    cout << "--------------------------" << endl;
    cout << "p)Play Game" << endl;
    cout << "q)Quit" << endl;
    cout << "Please enter your choice : " << endl;
    cin >> choice;


    while (choice != 'p' && choice != 'q')//or if//why &&
    {
        cout << "Invalid selection. Try again." << endl << endl << endl;
        cin >> choice;
    }

    switch (choice)
    {
    case 'p':
        compChoice = getComputerChoice();

        plaChoice = getPlayerChoice();

        if (plaChoice == 1)
        {
            cout << "You chose: Rock" << endl;
        }
        else if (plaChoice == 2)
        {
            cout << "You chose: Paper" << endl;
        }
        else 
        {
            cout << "You chose: Scissors" << endl;
        }


        if (compChoice == 1)
        {
            cout << "The computer chose: Rock" << endl;
        }
        else if (compChoice == 2)
        {
            cout << "The computer chose: Paper" << endl;
        }
        else
        {
            cout << "The computer chose: Scissors" << endl;
        }


        if (isTie(compChoice, plaChoice))
        {
            cout << "It is a Tie!";
        }



        break;


    case 'q':
        cout << "You have chosen to quit the program. Thank you for using the program!" << endl;
        break;

    }

} while (choice != 'q');


 return 0;
}



  int getComputerChoice()
   {
int comp = 0;
int rando = 0;
srand((unsigned int)time(NULL));

rando = rand() % 3 + 1;

switch (rando)
{
case 1:
     comp = 1;
    break;

case 2:
    comp = 2;
    break;

case 3:
    comp= 3;
    break;

    return comp;
}
  }


   int getPlayerChoice()
  {

int player;
cout << "Rock, Paper or Scissors?" << endl;
cout << "1) Rock" << endl;
cout << "2) Paper" << endl;
cout << "3) Scissors" << endl;
cout << "Please enter your choice: " << endl;
cin >> player;

while (player != 1 && player != 2 && player != 3)
{
    cout << "Invalid" << endl;
    cin >> player;
}
return player;
    }

  bool isTie(compu, playa)
   {
if (compu == playa)
    return true;
else
    return false;

     }

Это сообщения об ошибках, которые я получаю compu ': undeclared identifier playa': undeclared identifier 'isTie': redefinition;предыдущее определение было «функцией», см. объявление «isTie» «isTie»: инициализатор в стиле функции выглядит как определение функции

1 Ответ

1 голос
/ 20 октября 2019

isTie - это функция, имеющая 2 параметра. Из вашего кода я вижу, что он ожидает 2 integers.

Так что вам нужно обновить сигнатуру функции:

bool isTie(int compu, int playa)
...