pointeur sur structure tableau statique
Salut tout le monde,
Voilà j'ai un problème et j'espère qu'on m'apporte des indices de réponses et qu'on m'aide à résoudre mon angoisse :)
Bon rentrons dans le vif du sujet si vous le voulez bien: je souhaite faire un générateur de particule (donc assez simple à faire) mais j'ai un problème quand je souhaite utiliser un pointeur. En effet en n'utilisant pas de pointeur vers ma structure Particule dont les données sont contenus dans un tableau statiques, le jeu se lance et fonctionne normalement (on voit des particules se déplaçaient) mais lorsque je souhaite généraliser ma fonction par un pointeur le jeu ne lance plus :S
Voici la fonction ne fonctionnant pas en question:
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 36 37 38 39 40 41 42 43 44 45 46
| #define MAX_PARTICULE 50
typedef struct Particule {
float x;
float y;
float z;
float oldx;
float oldy;
float oldz;
float anglex;
float angley;
float anglez;
float speed;
float r;
float b;
float g;
float size;
float delayactive;
int active;
} Particule;
Particule particule[MAX_PARTICULE];
void initParticule(Particule**particule, int maxparticule, float x, float y, float z) {
int i;
for(i=0; i<maxparticule; i++) {
particule[i]->anglex = ((rand()%(360+360)-360)*M_PI)/180.0f;
particule[i]->angley = ((rand()%(360+360)-360)*M_PI)/180.0f;
particule[i]->anglez = ((rand()%(360+360)-360)*M_PI)/180.0f;
particule[i]->x = x;
particule[i]->y = y;
particule[i]->z = z;
particule[i]->oldx = particule[i]->x;
particule[i]->oldy = particule[i]->y;
particule[i]->oldz = particule[i]->z;
particule[i]->r = rand()%(255-0)+0;
particule[i]->b = rand()%(255-0)+0;
particule[i]->g = rand()%(255-0)+0;
particule[i]->speed = rand()%(5-1)+1;
particule[i]->speed /= 100.0f;//10.0f le mieux
particule[i]->delayactive = rand()%(50-5)+50;
particule[i]->delayactive /= 1000.0f;
particule[i]->size = rand()%(10-1)+1;//à diviser par 10 :)
particule[i]->size /= 100.0f;
particule[i]->active = 100;
}
} |
Voici la fonction fonctionnant:
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| #define MAX_PARTICULE 50
typedef struct Particule {
float x;
float y;
float z;
float oldx;
float oldy;
float oldz;
float anglex;
float angley;
float anglez;
float speed;
float r;
float b;
float g;
float size;
float delayactive;
int active;
} Particule;
Particule particule[MAX_PARTICULE];
Particule tirparticule[MAX_PARTICULE];
#define UTIL_PARTICULE 50
void initParticule(Particule*particule, int maxparticule, float x, float y, float z) {
int i;
for(i=0; i<maxparticule; i++) {
particule[i].anglex = ((rand()%(360+360)-360)*M_PI)/180.0f;
particule[i].angley = ((rand()%(360+360)-360)*M_PI)/180.0f;
particule[i].anglez = ((rand()%(360+360)-360)*M_PI)/180.0f;
particule[i].x = x;
particule[i].y = y;
particule[i].z = z;
particule[i].oldx = particule[i].x;
particule[i].oldy = particule[i].y;
particule[i].oldz = particule[i].z;
particule[i].r = rand()%(255-0)+0;
particule[i].b = rand()%(255-0)+0;
particule[i].g = rand()%(255-0)+0;
particule[i].speed = rand()%(5-1)+1;
particule[i].speed /= 100.0f;//10.0f le mieux
particule[i].delayactive = rand()%(50-5)+50;
particule[i].delayactive /= 1000.0f;
particule[i].size = rand()%(10-1)+1;//à diviser par 10 :)
particule[i].size /= 100.0f;
particule[i].active = 100;
}
} |
Merci de votre aide
Bonne soirée