我必须编写一个程序,其中的类是动物模拟在二维数组中相互干扰。我试图用一维数组做这个,我遇到了一只动物撞到另一只动物的问题。我不知道怎么做这样的事情。我声明了一个数组,如下所示:
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;
}
};
我如何让狼伤害绵羊的生命。我是否必须制作全局功能或做其他事情?
答案 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。