我正在使用一个函数,它将获取两个类的状态我应该如何生成该函数,现在我正在这样做
if((b1.fxmin>s.xmin&&s.ymin==b1.fymax)&&b1.fxmin<s.xmax&&s.ymin==b1.fymax))
{
collides=true;
b1.isFiring=false;
}
Else if((b1.fxmin>s1.xmin&&s1.ymin==b1.fymax)&&b1.fxmin<s1.xmax&&s1.ymin==b1.fymax))
{
collides1=true;
b1.isFiring=false;
}
在这个项目中,子弹将击中蜘蛛,如果它碰撞,蜘蛛就会消失, b1 是类子弹的对象, s1 和 s < / strong>是蜘蛛。
我在这个游戏中有7个蜘蛛,我创建了7个碰撞变量和7个if语句这意味着当我增加蜘蛛时我需要添加这个碰撞变量和if语句
我试图在子弹课上这样做,但不能成功。我应该如何将蜘蛛对象传递给子弹类?
答案 0 :(得分:2)
您可以按如下方式将Spider传递给项目符号类:
// Bullet.h
class Spider;
class Bullet {
...
bool isColliding(const Spider &s);
}
// Bullet.cpp
#include "Spider.h" // or whatever header you're using.
...
bool Bullet::isColliding(const Spider &s) {
// Collision logic
}
然后你可以通过以下方式从你这里调用这个函数:
if(b1.isColliding(s1)) {
// Do something.
}
答案 1 :(得分:0)
有很多方法可以做到这一点。首先,您必须具体说明您从两个不同类中进行比较的变量是私有变量还是公共变量?
如果它们是公共变量,则将地址对象作为输入参数传递给函数...就像这个函数(class1 * ptr1,class2 * ptr2)...并使用 - &gt;访问这些变量在函数内..
但是如果你将这些变量用作相应类的私有成员,那么有一种很好的方法可以做到这一点......这就是所谓的朋友类..你让另一个成为朋友......然后你就可以了使用必须是一个类成员的函数访问另一个类的变量,即使它们是private..google朋友类以获取更多信息。