用方法影响另一个对象的字段

时间:2018-01-02 16:03:08

标签: c++ class methods objective-c++

我必须编写一个程序,其中的类是动物模拟在二维数组中相互干扰。我试图用一维数组做这个,我遇到了一只动物撞到另一只动物的问题。我不知道怎么做这样的事情。我声明了一个数组,如下所示:

animal **tab = new animal*[3];
tab[0] = new wolf(30, 0);
tab[1] = new sheep(100, 0);
tab[2] = new wolf(30, 0);
int n=1;
if (tab[3 + n] = tab[4])
{
    cout << "HP left " <<  << endl;
}

以下是狼类的代码:

class wolf : public animal {
    public:
    int atack()
    {
        return DMG;
    }

    int life()
    {
        return HP;
    }

    wolf(int a, int b):animal(a, b)
    {
        DMG = b;
        HP = a;
    }
};

我如何让狼伤害绵羊的生命。我是否必须制作全局功能或做其他事情?

1 个答案:

答案 0 :(得分:1)

对象通过他们的方法进行交互。看起来你有一个类动物,你的Wolf类继承了它,希望你的Sheep类也继承Animal。既然你没有在Wolf中声明HP或损坏变量,我猜它已经在你的Animal类中了。

在Animal类中,您应该创建一个名为receiveDamage的方法或类似的方法。该方法修改了HP。

void receiveDamage(int damage) {
    HP -= damage;
    if (HP <= 0) {
        cout << "Animal died" << endl;
    }
}

现在你的狼类可以攻击,你希望你的攻击方法能够攻击目标动物。

void attack(Animal animal) {
    animal.receiveDamage(DMG)
}

现在,当狼攻击另一只动物(一只绵羊或另一只狼或其他任何遗传自动物的狼)时,伤害将被施加给HP。