我正在制作一个简单的捕捉水果的游戏,但我一直在遇到碰撞逻辑和/或使用类中的变量的麻烦。
class row
{
public:
int x,y;
void setpoint (int xi, int yi)
{
x=xi;
y=yi;
}
float DownSpeed = 5;
void down () {
y = y+DownSpeed;
if (y==1000) {
y=0;
}
}
};
class fruit:public row
{
public:
void draw()
{
setcolor(11);
circle(x,y,20);
}
};
然后我有其他类来创建捕手,如下所示:
class catcher
{
protected:
float moveSpeed = 5;
public:
float catchX, catchY;
void setpoint (int xi, int yi)
{
catchX=xi;
catchY=yi;
}
void MoveLeft () {
catchX = catchX - moveSpeed;}
void MoveRight () {
catchX = catchX + moveSpeed;}
};
class character:public catcher
{
public:
void draw()
{
setcolor(15);
circle(catchX,catchY,50);
}
};
如何调用两个圆的变量来创建碰撞函数?对不起,如果代码杂乱无效,我刚刚开始,我就陷入了困境。谢谢!
答案 0 :(得分:0)
由于两组变量都在类的公共部分,因此您应该能够创建一个独立于任一类的函数,并且只要声明它们就应该能够访问它们。
void CheckCollision(float x, float y, float catchX, float catchY)
{
If(y =< catchY + 5)
{
//y resets
}
}
你也想检查它是否在某个x范围内。我希望这能解决你的问题。
答案 1 :(得分:0)
因为所有的功能和变量都是公开的。从修改它们的函数返回x,catchX的值。在修改了值后使用绘制函数。
例如像这样修改你的向下功能
int down()
{
y = y+DownSpeed;
if (y==1000)
{
y=0;
}
return y;
}
明智地修改其他函数,最终得到x,y和catchX,catchY值。用这些值创建你的collison函数。