Bonjour,
J'ai tout essayé pendant un long moment mais je ne suis parvenu à comprendre pourquoi ça ne marche pas.
dans Ball.h :
Dans Ball.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); };
Et enfin dans le main.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Je précise que dans main.cpp si j'incrémente une variable x dans la routine :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ); } } } ... ...
Les 2 balles se déplacent bien en diagonales, alors que dans le code posté plus haut les 2 balles restent fixes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part HeartGraphics::drawSmallSprite( x , x, 0, 0 );
A votre avis pourquoi m_x et m_y ne sont pas mis à jour à chaque frame ?
Merci
Partager