将变量从多个类传递给函数

时间:2018-05-18 01:32:02

标签: c++ function class object variables

我正在制作一个简单的捕捉水果的游戏,但我一直在遇到碰撞逻辑和/或使用类中的变量的麻烦。

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);
}
};

如何调用两个圆的变量来创建碰撞函数?对不起,如果代码杂乱无效,我刚刚开始,我就陷入了困境。谢谢!

2 个答案:

答案 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函数。