初始化

时间:2015-11-20 04:12:24

标签: c++

我正在制作一个包含敌人的游戏。我有一个问题,如何初始化他们的HP,MP,攻击,防御和速度,而不是为每个人编写不同的代码:

int orcishHP = 50;
int orcishMP = 5;
int orcishAttack = 15;
int orcishDef = 10;
int orcishSpeed = 20;

当我引用兽人时,有没有办法初始化所有这些,就像这样:

int orcishStats(){
   int HP = 50
   etc...
}

所以我没有打电话给兽人MP HP以及所有这些东西,而是将它全部放在一个地方。

如果这是有道理的,请帮忙。如果这没有意义,那就不要帮忙。

2 个答案:

答案 0 :(得分:0)

这是执行此操作的正确方法:

您在类/结构中定义属性,并在初始化该结构时,调用构造函数(OrcishAttributes()):

struct OrcishAttributes
{
  int m_orcishHP;
  int m_orcishMP;
  int m_orcishAttack;
  int m_orcishDef;
  int m_orcishSpeed;
  OrcishAttributes(int orcishHP, int orcishMP, int orcishAttack, int orcishDef, int orcishSpeed)
  {
    m_orcishHP=orcishHP;
    m_orcishMP = orcishMP;
    m_orcishAttack = orcishAttack
    m_orcishDef = orcishDef;
    m_orcishSpeed = orcishSpeed;
  }

}

class Orc
{
  public:
  Orc(OrcishAttributes oa)
  {
     m_orcAttributes = oa;
  }
  private:
    OrcishAttributes m_orcAttributes;
}

int main()
{

  OrcishAttributes oa(50,5,15,10,20);
  Orc* o = new Orc(oa);
}

答案 1 :(得分:0)

这就是为什么我们有OOP。

您可以定义一个基类,比如Unit。它可以存储常用成员,如字段或方法:

class Unit
{
protected:
    int HP;
    int MP;
    int Attack;
    int Def;
    int Speed;

public:
    int getHPplusMP()
    {
        return HP + MP;
    }
};

然后,您可以在其构造函数中创建继承的类并初始化这些值:

class OrcUnit : public Unit
{
public:
    OrcUnit()
    {
        HP = 20;
        MP = 0;
        Attack = 13;
        Def = 4;
        Speed = 5;
    }
};

class ElfUnit : public Unit
{
public:
    ElfUnit()
    {
        HP = 25;
        MP = 15;
        Attack = 15;
        Def = 1;
        Speed = 8;
    }
};

然后,您将能够使用它:

ElfUnit elf;
OrcUnit orc;

Unit u = elf;
cout << u.getHPplusMP();

Unit u = orc;
cout << u.getHPplusMP();

一般来说,在尝试实施游戏之前,学习OOP绝对是一个好主意。