Jump to content

  • Log In with Google      Sign In   
  • Create Account


Problem with my Collision with c++ and SFML


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 Crusable   Members   -  Reputation: 592

Like
0Likes
Like

Posted 03 February 2013 - 01:57 AM

Hello, I have been making a pong clone and I have run into some trouble with collision. It is not that I cannot get collision to work, it is(I think) my approach that is flawed. I have searched on google for help, however I could not find anything.

 

collision.h

 

 

 
 
#ifndef COLLISION_H
#define COLLISION_H
 
#include <SFML\Graphics.hpp>
 
#include "Ball.h"
#include "Player.h"
#include "Enemy.h"
 
class Collision{
 
public:
    Collision();
    ~Collision();
 
    //return true if there is a collision detected
    bool BOP_Collision(sf::RenderWindow& App, const Player* const player = NULL, const Enemy* const enemy = NULL); //BOP = boundries on paddle
    bool BOB_Collision(sf::RenderWindow& App, const Ball* const ball); //BOB = boundries on ball
    bool POB_Collision(sf::RenderWindow& App, const Player* const player = NULL, const Enemy* const enemy = NULL, const Ball* const ball = NULL); //POB = paddle on ball
 
private:
    sf::Vector2f pVector; //vector for the player
    sf::Vector2f eVector; //vector for the enemy
    sf::Vector2f bVector; //vector for the ball
 
};
 
#endif

collision.cpp

 

 
#include "Collision.h"
 
Collision::Collision(){}
 
Collision::~Collision(){}
 
bool Collision::BOP_Collision(sf::RenderWindow& App, const Player* const player = NULL, const Enemy* const enemy = NULL){
 
    pVector = player->getPosition();
    eVector = enemy->getPosition();
}
 
bool Collision::BOB_Collision(sf::RenderWindow& App, const Ball* const ball){
 
 
}
 
bool Collision::POB_Collision(sf::RenderWindow& App, const Player* const player = NULL, const Enemy* const enemy = NULL, const Ball* const ball = NULL){
 
 
}

 

The error is with

pVector = player->getPosition()
. It says "Error: the object has type qualifiers that are not compatible with the member function". Thank you in advance for all your help.

"C spilled his beer all over C++'s shirt. Outraged, C++ shouted, "Good god, man! Have you no class?"

"Your mother is so fat that the recursive function that was used to calculate her mass created a stack overflow"

 

 


Sponsor:

#2 ultramailman   Prime Members   -  Reputation: 1556

Like
1Likes
Like

Posted 03 February 2013 - 02:21 AM

I am guessing your getPosition method is lacking a const on the right hand side of the method signature.
If I guessed right, it should be something like this:
class Player
{
public:
    Vector getPosition() const; //<- this const
};

Edited by ultramailman, 03 February 2013 - 02:24 AM.


#3 Crusable   Members   -  Reputation: 592

Like
0Likes
Like

Posted 03 February 2013 - 02:26 AM

Why does it need to be constant? Also, thank you, It did work.


Edited by Mathew Bergen, 03 February 2013 - 02:27 AM.

"C spilled his beer all over C++'s shirt. Outraged, C++ shouted, "Good god, man! Have you no class?"

"Your mother is so fat that the recursive function that was used to calculate her mass created a stack overflow"

 

 


#4 ultramailman   Prime Members   -  Reputation: 1556

Like
1Likes
Like

Posted 03 February 2013 - 02:37 AM

Look at this signature:
bool Collision::BOP_Collision(sf::RenderWindow& App, const Player* const player = NULL, const Enemy* const enemy = NULL);
The player variable is of type
const Player * const
That means the pointer and the object it points should not be changed while in this function. So if you call a read-write (not const)method on player, the compiler will tell you it's an error. That's why the method should be declared as read-only (has that const on the right side).

It's a good idea to make a method const, if the method does not modify the object.

Edited by ultramailman, 03 February 2013 - 02:39 AM.


#5 Crusable   Members   -  Reputation: 592

Like
0Likes
Like

Posted 03 February 2013 - 02:41 AM

Thank you.


"C spilled his beer all over C++'s shirt. Outraged, C++ shouted, "Good god, man! Have you no class?"

"Your mother is so fat that the recursive function that was used to calculate her mass created a stack overflow"

 

 





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS