Bonjour à tous,
J'ai décider de m'atteler à un problème que j'ai depuis que j'ai commencé à programmer en C ...
Le passage en argument pour des fonctions !!!!!!
Primordiale pour la découpe d'un code et l'optimisation, je suis confronté à cette lacune.
Voila mon problème:
Dans mon main.c, je défini les 5 objets suivant:
La structure B_B_Cercle est :
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 SDL_Rect *positionobjet; positionobjet = malloc (10*sizeof(SDL_Rect) ); for( i=0;i<10;i++) { positionobjet[i].x = 0; positionobjet[i].y = 0; } Struct B_B_Cercle boxC1objet[10]; Struct B_B_Cercle boxC2objet[10]; SDL_Surface *objet[10]; /* il est remplie de sprite de corps céleste ( météorite,planète,étoile ... ) int h,w;
Voila pour les déclarations.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct B_B_Cercle B_B_Cercle; struct B_B_Cercle { int x; int y; int rayon; };
Je souhaite ensuite créer une fonction qui appelle ces 5 objets pour remplir les structures B_B_Cercle boxC1objet et B_B_Cercle boxC1objet.
J'ai crée la fonction suivant:
Elle est plutôt courte ^^
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
36
37 double frand_a_b(double a, double b); void init_B_B_cercle_objet(SDL_Rect **position_objet,B_B_Cercle BC1[],B_B_Cercle BC2[],SDL_Surface *objet[],int h,int w) { int nombre_aleatoire1=0,nombre_aleatoire2=0, i; srand(time(0)); int a=0; for( i=0;i<10;i++) { /* on remplie le tableau de SDl_Rect positionobjet grâce à la fonction aléatoire frand */ int b1,b2; b1=w-objet[i]->w; b2=h-objet[i]->h; nombre_aleatoire1=frand_a_b(a,b1); nombre_aleatoire2=frand_a_b(a,b2); position_objet[i]->x = nombre_aleatoire1 ; position_objet[i]->y = nombre_aleatoire2 ; /* On remplie le tableau de boite de test C1*/ BC1[i].x= position_objet[i]->x + objet[i]->w/2; BC1[i].y= position_objet[i]->y + objet[i]->h/2; BC1[i].rayon=objet[i]->w/2; /* On remplie le tableau de boite de test C2*/ BC2[i].x= BC1[i].x; BC2[i].y= BC1[i].y; BC2[i].rayon=objet[i]->w/2+4; } } double frand_a_b(double a, double b) { return (rand()/(double)RAND_MAX)*(b-a) +a; }
Ensuite j'appelle la fonction dans mon main.
... et la c'est le drame
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 init_B_B_cercle_objet(&positionobjet,boxC1objet[10],boxC2objet[10],objet[10]),h,w);![]()
J'ai besoin d'un avis extérieur car je suis paumé.
Mercie d'avance
Maxime
Partager