我可以在函数内部有一个函数吗?

时间:2019-07-16 05:40:40

标签: c++

我基本上是在做一个包含两个玩家的游戏,我必须使用函数,选择和循环来实现它。

所以,我做了一个函数,要求user1和user2在程序中输入他们的名字。

我的问题是,如果说我要创建另一个函数,并且在该函数中我想要一个if语句来检查条件...例如,如果(name == someFunction)然后输出以下内容,等等。 / p>

我在下面编写我的代码,所以也许这样会使它更清晰。

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

using namespace std;

string getPlayerOneName();
string getPlayerTwoName();
double game(string, int, int);

int main()
{

    cout << "Let's Play Frack! " << endl << endl;
    string nameOne = getPlayerOneName();
    string nameTwo = getPlayerTwoName();
    int points = getUserInputForPoints();

    system("pause");
    return 0;
}

string getPlayerOneName() // -----------------------------------------------------

{
    string playerOne;
    cout << "Enter player 1's name: ";
    cin >> playerOne;
    return playerOne;
}

string getPlayerTwoName() // -----------------------------------------------------

{
    string playerTwo;
    cout << "Enter player 2's name: ";
    cin >> playerTwo;
    return playerTwo;
}

double game(string name, int tno, int dno)
{
    char roll;
    double avg = 0.0;
    cout << name << "s turn" << tno << " " << endl;
    cout << "Enter R to roll " << dno << "dice: ";
    cin >> roll;
    cout << endl;
    if (roll == 'R')
    {
        if (name == )
        {
            char ch;
            cout << "Do you want to start from zero (z) or from " << playerOne << "'s" << "score:? ";
            cin >> ch;
            if (ch == 'z')
            {
                dno = 5;
            }
        }

        cout << "Your dice are: ";
        int dno2 = dno;
    }
}

因此对于最后一个函数,如果在if语句中可以包含-:

if (name == string getPlayerTwoName())
{
}

1 个答案:

答案 0 :(得分:0)

所以,您有两个类似的功能

string getPlayerOneName() // -----------------------------------------------------

{
string playerOne;
cout << "Enter player 1's name: ";
cin >> playerOne;
return playerOne;
}

string getPlayerTwoName() // -----------------------------------------------------

{
string playerTwo;
cout << "Enter player 2's name: ";
cin >> playerTwo;
return playerTwo;
}

并且您认为:“这应该被概括为一个函数。”

首先:恭喜。您开始像计算机科学家一样思考。 (不要开玩笑。)

要实现此目的,您必须确定这两个功能的实际区别。

string player…变量是,但是可以在不破坏任何内容的情况下对其进行更改:

string getPlayerOneName() // -----------------------------------------------------

{
string player;
cout << "Enter player 1's name: ";
cin >> player;
return player;
}

string getPlayerTwoName() // -----------------------------------------------------

{
string player;
cout << "Enter player 2's name: ";
cin >> player;
return player;
}

仍然存在不同的提示文本。因此,这是一个函数参数的候选对象:

string getPlayerName(const char *prompt)
{
  string player;
  cout << prompt;
  cin >> player;
  return player;
}

新函数getPlayerName()可以用以下命令调用:

  string nameOne = getPlayerName("Enter player 1's name: ");
  string nameTwo = getPlayerName("Enter player 2's name: ");

这非常灵活,因为它可以用于播放器名称以外的其他用途。 (不过,在这种情况下,getName()可能是更好的选择。)

如果这不是故意的,则可以减少代码重复(调用中),例如:

string getPlayerName(int iPlayer)
{
  string player;
  cout << "Enter player " << iPlayer << "'s name: ";
  cin >> player;
  return player;
}

通话看起来像:

  string nameOne = getPlayerName(1);
  string nameTwo = getPlayerName(2);
相关问题