Передача переменной из нескольких классов в функцию - PullRequest
0 голосов
/ 18 мая 2018

Я делаю простую игру, чтобы поймать фрукты, но у меня были проблемы с логикой столкновения и / или использованием переменных из классов.

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 голосов
/ 18 мая 2018

Поскольку все функции и переменные являются открытыми.вернуть значения x, catchX из функций, модифицирующих их.используйте функции рисования после того, как у вас есть измененные значения.

например, измените вашу функцию down следующим образом:

int down()
{
    y = y+DownSpeed;

    if (y==1000) 
    {
        y=0;
    }
    return y;
} 

Измените другую функцию, как мудро, и у вас получится x, yи catchX, броские значения.создайте свою функцию согласования с этими значениями.

0 голосов
/ 18 мая 2018

Поскольку оба набора переменных находятся в публичной части класса, вы должны иметь возможность создать функцию, независимую от любого класса, и иметь возможность доступа к переменным, пока они объявлены.

void CheckCollision(float x, float y, float catchX, float catchY)
{
    If(y =< catchY + 5)
    {
        //y resets
    }
}

Вы бы тоже хотели проверить, находится ли он в определенном диапазоне x.Я надеюсь, что это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...