我正在制作一个包含敌人的游戏。我有一个问题,如何初始化他们的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以及所有这些东西,而是将它全部放在一个地方。
如果这是有道理的,请帮忙。如果这没有意义,那就不要帮忙。
答案 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绝对是一个好主意。