attribut membre d'objet de classe
Bonjour,
J'ai tout essayé pendant un long moment mais je ne suis parvenu à comprendre pourquoi ça ne marche pas.
dans Ball.h :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #pragma once
class Ball {
public:
Ball( int posX, int PosY, int speedX, int speedY);
~Ball( void );
int m_x;
int m_y;
int m_speedX;
int m_speedY;
static Ball *balls[2];
void updateBall(int posX, int PosY);
}; |
Dans Ball.cpp :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include "Ball.h"
Ball * Ball::balls[2] = {0};
// build / destruct -------------------------------------------------------------------------
Ball::Ball( int posX, int posY, int speedX, int speedY)
{
m_x = posX;
m_y = posY;
m_speedX = speedX;
m_speedY = speedY;
}
Ball::~Ball(void)
{
//OutputDebugString("destruction ball\n");
}
void Ball::updateBall(int posX, int posY){
m_x = posX;
m_y = posY;
} |
Et enfin dans le main.cpp :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include <math.h>
#include "Ball.h"
...
...
Ball::balls[0] = new Ball((int)(-SCREEN_WIDTH/2+50), (int)(-SCREEN_HEIGHT/2+50), 10, 10);
Ball::balls[1] = new Ball(0, 0, 10, 10);
...
...
void HeartGame::routine () {
{
for(int i=0; i<=1; i++){ //On boucle sur toutes les billes
Ball *b = Ball::balls[i];
//b->updateBall(b->m_x + x, b->m_y + x);
b->updateBall(b->m_x + b->m_speedX, b->m_y + b->m_speedY);
HeartGraphics::drawSmallSprite( b->m_x , b->m_y, 0, 0 );
}
}
}
...
... |
Je précise que dans main.cpp si j'incrémente une variable x dans la routine :
Code:
HeartGraphics::drawSmallSprite( x , x, 0, 0 );
Les 2 balles se déplacent bien en diagonales, alors que dans le code posté plus haut les 2 balles restent fixes.
A votre avis pourquoi m_x et m_y ne sont pas mis à jour à chaque frame ?
Merci