Problema com POO C++ SDL2

23/08/2021

0

C++

Estou programando em SDL2, porém eu fiz uma classe onde acontece a colisão de objetos, em que no seus parâmetros ele precisa de 2 GameObjects(Um colisor, e o objeto colidido). Na classe GameObject que eu criei, os varios inimigos e até mesmo o jogador são considerados GameObject, com uma variavel chamada “Tipo” que detecta se ele é um Player,Um inimigo, Um inimigo diferenciado,etc. E baseado nisso o GameObject tem suas variações. Porém para as colisões funcionarem eu precisaria chamar a funçao de colidir dentro de um GameObject, e é ai que mora o problema, pois como vou colocar parametros de dois gameobjects que nem existem ainda nessa classe? Eu teria que ir no main.c e programar as colisões de cada um individualmente(o que possivelmente vai gerar muitas linhas de codigo). Seria possivel contornar essa situação?
class GameObject{
	
	public:
		GameObject(SDL_Rect src,SDL_Rect dst,SDL_Texture* textura,int x);
		~GameObject();
		void updateObjeto();
		void setPosition(int x,int y);
		SDL_Rect getRectDst();
		SDL_Rect getRectSrc();
		SDL_Texture* getTexture();
		unsigned short getTipo();
		
	private:
		SDL_Rect destination;
		SDL_Rect source;
		SDL_Texture* texturaObjeto;
		unsigned short tipo;
		void playerUpdate();
        void inimigoUpdate();

};

Aqui é a função de Update caso a classe detecte que se trata de um player

void GameObject::playerUpdate(){
	
	colisao->updateColisao(GameObject* objeto1,GameObject* objeto2);
	
}

Função de colisão em outra classe (ignorem que ainda n programei a colisaokk)

void Collision::updateColisao(GameObject* objeto1, GameObject* objeto2){
	SDL_Rect colisor = objeto1->getRectDst();
	SDL_Rect colidido = objeto2->getRectDst();
}
Dalton Lobato

Dalton Lobato

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar