3

作为记录,我在 C++ 和任何其他编程语言方面完全是绿色的,所以如果可能的话,如果你能以我能理解的方式回答,我会很高兴:)

我最近一直在做一个简单的石头剪刀布游戏,其中我有 3 个基本功能,一个是给用户的,一个是给机器人的,一个是选择哪一个赢得比赛。

我知道使用system("cls")不是最好的方法,但我不打算在 Windows 之外使用它。

最终函数results()需要使用变量xbrand前两个函数,但是我似乎找不到这样做的方法。人们在其他任何地方解释它,他们解释它对我来说太高级了。请记住,我不需要更改其中任何一个,我只需将它们进行比较即可确定获胜者。

我将在这里向您展示我的代码,以便您查看正在处理的内容。请给我评论我可以在这里改进的其他事情。

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <windows.h>

using namespace std;
int bgame(), ugame(), results();
int main()
{
    srand(time(NULL));
    cout<<"Welcome to RPS!\n" <<"You know what to do.\n" <<"\n[ENTER]";
    cin.ignore();
    system("cls");
    ugame();

    return 0;
}

int ugame()
{
    int x;
    cout<<"Type a number from 1-3: ";
    cin>> x;
    cin.ignore();

    if ( x == 1 )
    {
        cout<<"\nYou chose rock!\n" <<"\n[ENTER]";
        cin.ignore();
        bgame();
    }
    else if ( x == 2)
    {
        cout<<"\nYou chose paper!\n" <<"\n[ENTER]";
        cin.ignore();
        bgame();
    }
    else if ( x == 3 )
    {
        cout<<"\nYou chose scissors!\n" <<"\n[ENTER]";
        cin.ignore();
        bgame();
    }
    else
    {
        cout<<"\nTry again.\n" <<"\n[ENTER]";
        cin.ignore();
        ugame();
        system("cls");
    }
    return 0;
}


int bgame()
{
    int brand = rand()>>4;

    system("cls");
    cout<<"The bot will now choose an item.\n" <<"\n" <<"[ENTER]\n";
    cin.ignore();
    brand = rand() % 3 + 1;

    if ( brand == 1)
    {
        cout<<"\nBot chose rock!";
        cin.ignore();
        results();
    }
    else if ( brand == 2 )
    {
        cout<<"\nBot chose paper!";
        cin.ignore();
        results();
    }
    else if ( brand == 3 )
    {
        cout<<"\nBot chose scissors!";
        cin.ignore();
        results();
    }
    else
    {
        cout<<"\nError.";
        cin.ignore();
        bgame();
        system("cls");
    }
    return 0;
}

int results()
{

}
4

4 回答 4

9

您可以将“参数”发送到函数。这是创建变量的副本,您可以在另一个函数中使用它。

您需要使用您的函数名称(即原型)指定它,如下所示:

int results(int x, int brand)

你放了一个类型名和一个变量名。例如,此函数将采用 2 个 int 作为参数。

int results(int x, int brand)
{
   // do something with your variables
}

当你调用你输入的函数时:

results(x, brand);

如果您愿意,此链接将通过图像和示例以及更多详细信息对其进行说明:http ://www.cplusplus.com/doc/tutorial/functions/

于 2013-07-18T08:48:10.477 回答
1

使用参数,传值。在函数头中有参数,因此您可以将值传递给函数。

using namespace std;
int bgame(int x_p), ugame(), results(int x_p, int brand_p);
int main()


{
    srand(time(NULL));
    cout<<"Welcome to RPS!\n" <<"You know what to do.\n" <<"\n[ENTER]";
    cin.ignore();
    system("cls");
    ugame();

    return 0;
}

int ugame()
{
    int x;

    cout<<"Type a number from 1-3: ";
    cin>> x;
    cin.ignore();

    if ( x == 1 )
    {
        cout<<"\nYou chose rock!\n" <<"\n[ENTER]";
        cin.ignore();
        bgame(x);
    }
        else if ( x == 2)
    {
        cout<<"\nYou chose paper!\n" <<"\n[ENTER]";
        cin.ignore();
        bgame(x);
    }
        else if ( x == 3 )
    {
        cout<<"\nYou chose scissors!\n" <<"\n[ENTER]";
        cin.ignore();
        bgame(x);
    }
        else
    {
        cout<<"\nTry again.\n" <<"\n[ENTER]";
        cin.ignore();
        ugame();
        system("cls");
    }

    return 0;
}


int bgame(int x_p)
{
    int brand = rand()>>4;

    system("cls");
    cout<<"The bot will now choose an item.\n" <<"\n" <<"[ENTER]\n";
    cin.ignore();
    brand = rand() % 3 + 1;

    if ( brand == 1)
    {
        cout<<"\nBot chose rock!";
        cin.ignore();
        results(x_p, brand);
    }
    else if ( brand == 2 )
    {
        cout<<"\nBot chose paper!";
        cin.ignore();
        results(x_p, brand);
    }
    else if ( brand == 3 )
    {
        cout<<"\nBot chose scissors!";
        cin.ignore();
        results();
    }
    else
    {
        cout<<"\nError.";
        cin.ignore();
        bgame(x_p);
        system("cls");
    }
    return 0;
}



int results(int x_p, int brand_p)
{
  // Do whatever you want to do with x (x_p) and brand (brand_p).
}
于 2013-07-18T09:03:26.347 回答
1

首先,学习如何使用带参数的函数。

在那之后,你应该能够做你想做的事。

如建议的那样,您只需要执行以下操作:

宣言 :

int bgame(int x){
    ... what bgame do ...
}

在 ugame 中:

int ugame(){
    int x;
    ...
    cin >> x;
    ...
    bgame(x);
}

希望这可以帮助。

于 2013-07-18T08:55:55.600 回答
1

对你来说,你只需要为每个函数返回 1 个值,所以 return 就可以了。代替 return 0;,使用 return x; 并返回品牌;。在比较函数中,定义两个新变量,比如y;或 crand;,然后像这样分配它们:y=int ugame(); 和 crand=int bgame();。然后 y=x 和 crand=brand 你可以从那里开始工作。所以你不需要任何参数或任何东西。另外,不要试图直接定义品牌,只需声明 int brand;并让随机函数(顺便说一下,必须用 srand 播种)为品牌分配一个值。您也不必将函数定义为 int; 他们会定义自己。

于 2015-05-21T20:06:15.857 回答