Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从C+;中的主脚本修改函数中的变量+;_C++_Arrays_If Statement_While Loop - Fatal编程技术网

C++ 如何从C+;中的主脚本修改函数中的变量+;

C++ 如何从C+;中的主脚本修改函数中的变量+;,c++,arrays,if-statement,while-loop,C++,Arrays,If Statement,While Loop,我已经做了几个小时了。我正在做一个小游戏在C++中,我试图找出如何编辑变量从一个函数内部。我可以将变量放在main()中并在那里编辑它们,没有问题,但是我不知道从函数中编辑需要做什么。下面是函数 void HeroSelect(string& hero) { int gold = 20, health = 5, attack = 5, stats[2] = { health, attack }; string weapon; cout << "Plea

我已经做了几个小时了。我正在做一个小游戏在C++中,我试图找出如何编辑变量从一个函数内部。我可以将变量放在main()中并在那里编辑它们,没有问题,但是我不知道从函数中编辑需要做什么。下面是函数

void HeroSelect(string& hero)
{
    int gold = 20, health = 5, attack = 5, stats[2] = { health, attack };
    string weapon;
    cout << "Please choose your hero.\n";
    cin >> hero;
    if (hero == "Warrior" || hero == "warrior")
    {
        weapon = "Broad Sword";
        cout << "You are a Warrior wielding a " << weapon << endl;
        cout << "Good choice.\n"
            << "You start out with " << gold << " gold." << endl
            << "You have " << stats[0]<< " health and " << stats[1] << " attack.\n";
    }
void HeroSelect(字符串和英雄)
{
智力黄金=20,生命=5,攻击=5,属性[2]={生命,攻击};
弦武器;
英雄;
如果(英雄==“战士”| |英雄==“战士”)
{
武器=“大刀”;

CUT

你可能需要对C++和OOP进行复习。你的概念并不坏,但你可以使它更好。(如果你真的想以某种方式做一些事情,并且你能以这样的方式做,那么就一定要做到:P)。 正如你在评论中提到的,游戏设计的重新设计可能是合适的。你会想要建立一个英雄类,以多个变量或子类作为属性(例如:力量、生命值、武器类、装甲类等)(我们可以进入一个较低级别的描述,但我认为还没有必要).如果你计划拥有多件武器,一个武器类别可能也是一个好主意,例如你可以定义武器属性:攻击伤害、攻击率、武器耐久性等

在这些类中,你可以创建“助手函数”,然后用它来更改相关对象的状态。助手函数可以是公共函数,允许你增加/减少英雄生命值,或者可能是增加攻击伤害的助手函数


你看起来很擅长学习,所以希望你能在这里想象这个想法。无论怎样,只要有必要,就继续磨磨蹭蹭,自由地要求更深入的回答。当你准备好做一些测试的时候,我很想看看你的游戏。

< P>你需要对C++和OOP做一个复习。你的概念不错,但你可以POSS。当然,如果你真的想以某种特定的方式做某件事,并且你能够以这种方式做它,那么无论如何,只要做它:P)

正如你在评论中提到的,游戏设计的重新设计可能是合适的。你会想要建立一个英雄类,以多个变量或子类作为属性(例如:力量、生命值、武器类、装甲类等)(我们可以进入一个较低级别的描述,但我认为还没有必要).如果你计划拥有多件武器,一个武器类别可能也是一个好主意,例如你可以定义武器属性:攻击伤害、攻击率、武器耐久性等

在这些类中,你可以创建“助手函数”,然后用它来更改相关对象的状态。助手函数可以是公共函数,允许你增加/减少英雄生命值,或者可能是增加攻击伤害的助手函数


看起来你在学习方面做得很好,所以希望你能在这里把想法形象化。不管是哪种方式,继续努力,并在必要时随时询问更深入的答案!当你准备好进行测试时,我很想看看你的游戏!

有几种方法可以解决这个问题。 第一个是创建一个类,ejsd1989在注释和答案中介绍了这个类

第二种选择是通过在main中创建这些变量来使这些变量成为全局变量,并通过引用将它们传递给每个函数。这样可以保持main的整洁

例如:

void HeroSelect(string& hero, int &gold, int &health)
第三个选项与第二个选项非常相似,它将这些变量存储在一个数组中,并使用每个函数修改数组

void HeroSelect(string& hero)
{
    int gold = 20, health = 5, attack = 5, stats[2] = { health, attack };
    string weapon;
    cout << "Please choose your hero.\n";
    cin >> hero;
    if (hero == "Warrior" || hero == "warrior")
    {
        weapon = "Broad Sword";
        cout << "You are a Warrior wielding a " << weapon << endl;
        cout << "Good choice.\n"
            << "You start out with " << gold << " gold." << endl
            << "You have " << stats[0]<< " health and " << stats[1] << " attack.\n";
    }

本质上,它归结为创建一个类或将变量传递给希望使用的函数。

有几种方法可以处理这个问题。 第一个是创建一个类,ejsd1989在注释和答案中介绍了这个类

第二种选择是通过在main中创建这些变量来使这些变量成为全局变量,并通过引用将它们传递给每个函数。这样可以保持main的整洁

例如:

void HeroSelect(string& hero, int &gold, int &health)
第三个选项与第二个选项非常相似,它将这些变量存储在一个数组中,并使用每个函数修改数组

void HeroSelect(string& hero)
{
    int gold = 20, health = 5, attack = 5, stats[2] = { health, attack };
    string weapon;
    cout << "Please choose your hero.\n";
    cin >> hero;
    if (hero == "Warrior" || hero == "warrior")
    {
        weapon = "Broad Sword";
        cout << "You are a Warrior wielding a " << weapon << endl;
        cout << "Good choice.\n"
            << "You start out with " << gold << " gold." << endl
            << "You have " << stats[0]<< " health and " << stats[1] << " attack.\n";
    }

本质上,它归结为创建一个类或将变量传递给您希望使用的函数。

Main不是一个脚本,并且在设计中存在一些概念性问题。逐字回答是:通过引用传递函数参数。但这不是一个很好的任务解决方案。 请考虑这个例子:

uint menu;
Hero * hero;
Room entrance, next[5];

entrance.Enter();

std::cout << "1st step in this adventure is to choose your hero." <<std::endl;
std::cout << "You can choose " <<std::endl;
std::cout << "(1)       a warrior " << std::endl;
std::cout << "(2) ,     a wizard" << std::endl;
std::cout << "(3) , or an archer." << std::endl;
std::cout << "Please choose your hero." << std::endl;
std::cin >> menu;
switch( menu )
{
    case  3 : { hero = new Archer;  break; }
    case  2 : { hero = new Wizard;  break; }
    default : { hero = new Warrior; break; }
}
hero->Weapon();
hero->Gold();
hero->Health();
hero->Attack();

std::cout << "Which room to enter? 1..5" << std::endl;
std::cin >> menu;

next[menu - 1].Enter();
if( 5 == menu )
{
    std::cout << "You are attacked by a troll!" << std::endl;
    hero->SetHealth( hero->GetHealth() >> 1 );
}
hero->Health();
uint菜单;
英雄*英雄;
房间入口,下[5];
进入;

std::coutMain不是一个脚本,设计中存在一些概念性问题。逐字回答可能是:通过引用传递函数参数。但这不是一个很好的任务解决方案。 请考虑这个例子:

uint menu;
Hero * hero;
Room entrance, next[5];

entrance.Enter();

std::cout << "1st step in this adventure is to choose your hero." <<std::endl;
std::cout << "You can choose " <<std::endl;
std::cout << "(1)       a warrior " << std::endl;
std::cout << "(2) ,     a wizard" << std::endl;
std::cout << "(3) , or an archer." << std::endl;
std::cout << "Please choose your hero." << std::endl;
std::cin >> menu;
switch( menu )
{
    case  3 : { hero = new Archer;  break; }
    case  2 : { hero = new Wizard;  break; }
    default : { hero = new Warrior; break; }
}
hero->Weapon();
hero->Gold();
hero->Health();
hero->Attack();

std::cout << "Which room to enter? 1..5" << std::endl;
std::cin >> menu;

next[menu - 1].Enter();
if( 5 == menu )
{
    std::cout << "You are attacked by a troll!" << std::endl;
    hero->SetHealth( hero->GetHealth() >> 1 );
}
hero->Health();
uint菜单;
英雄*英雄;
房间入口,下[5];
进入;

std::难道我认为你需要重新开始你的设计吗?让我们考虑一下这个设计,你有一个“英雄”,听起来像是一个物体。你有一个“武器”,另一个物体。这个“英雄”怎么知道他或她有什么“武器”呢?也许“英雄”可以有一些包含“武器”的收藏品?一个“英雄”还有什么有?可能是“健康”或“力量”之类的属性?这怎么能被纳入“英雄”中呢对象?要使变量在函数中可见,最简单的方法是将它们从
main
中移出并生成它们。这将更好地匹配您当前使用的编程风格,但全局变量和您在存储数据时缺乏结构都会被考虑在内。请尝试学习一下,然后返回游戏比