Bonjour tout le monde !
Alors j'ai un problème assez particulier avec un petit programme que je suis en train de faire.
Je suis débutant en programmation mais j'ai quelques bases en C et SDL que j'ai commencé à apprendre il y a quelques temps.
Actuellement je suis en train de faire un petit programme qui simule une pluie en 2D mais j'ai rencontré un problème ; voici d'abord les fichiers :
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
38
39
40
41
42
43
44
45
46
47
48 ///============================================================================= /* generation_goute.c -génération aléatoire d'une certaine quantité de goutes -génération aléatoire des coordonnées de toutes ces goutes -affichage des goutes + simulation de pluie -retournement à main.c des coordonnées de toutes les goutes dans un tableau de structure de coordonnées */ #include "generation_goute.h" ///============================================================================= ///============================================================================= ///DEBUT PLUIE //Effet de pluie void pluie (SDL_Surface *fenetre, const long intensite, unsigned long couleur_goute1, unsigned long couleur_goute2, unsigned long couleur_goute3) { //Coordonnées aléatoires des goutes de pluie en X srand((unsigned)time(NULL)); //Initialisation du générateur unsigned long n = 0; //Nomber de goutes par "vagues" n = nbr_aleatoire(intensite); /*Génération d'un nombre aléatoire entre 0 et intensite et qui va représenter le nombre de goutes de pluie dans la prochaine "vague"*/ unsigned long coord_Goute_X[intensite]; unsigned char i; for (i=0; i<intensite; i++) coord_Goute_X[i] = nbr_aleatoire(800); //Affihage des goutes de pluies selon les coordonnées de départ générés aléatoirement SDL_Surface *goute[n] = {NULL}; for(i = 0; i!=intensite; i++) { goute[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 1, nbr_aleatoire(10), 32, 0, 0, 0, 0); SDL_FillRect (goute[i], NULL, SDL_MapRGB(fenetre->format, couleur_goute1, couleur_goute2, couleur_goute3)); } } ///FIN PLUIE ///=============================================================================
J'ai 4 autre fichier que je n'ai pas mis car ce sont ceux qui comptent.
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 /* generation_goute.h -génération aléatoire d'une certaine quantité de goutes -génération aléatoire des coordonnées de toutes ces goutes -retournement à main.c des coordonnées de toutes les goutes dans un tableau de structure */ #ifndef GENERATION_GOUTE_H #define GENERATION_GOUTE_H #include <stdlib.h> #include <stdio.h> #include <time.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> #include <FMOD/fmod.h> #include <FMOD/fmod_errors.h> //L'intensité est = au nombre maximal de gouttes de pluie par "vagues" #define INTENSITE 50 //Couleur des goutes de pluie #define COULEUR1 0 #define COULEUR2 0 #define COULEUR3 0 #endif //GENERATION_GOUTE_H typedef struct Coord_Goute Coord_Goute; struct Coord_Goute { unsigned long x; unsigned long y; };
C'est generation_goute.c qui a le role de généré la pluie.
Je voulais pouvoir faire en sortent que le fichier main.c et generation_goute.c quasiment indépendant l'un de l'autre.
J'ai également une autre fonction dans un fichier nbr_aleatoire.c qui est indépendant dont voici le prototype :
où nbr_max et la valeur maximal du nombre généré aléatoirement. Mais je n'ai aucun problème avec cette fonction c'est simplement à titre informatif.
Code : Sélectionner tout - Visualiser dans une fenêtre à part int nbr_aleatoire (unsigned long nbr_max)
Revenons à nos moutons :
J'étais en train de programmer la fonction pluie mais j'ai eu un problème.
Il faut absolument que lorsque l'on apelle la fonction pluie (dans generation_goute), on passe une valeur pour l'argument intensite, de sorte à ce que l'on puisse choisir l'intensite de la pluie lors de l'apelle de la fonction. Mais lorsque je compile ce programme (qui ne fait absolument rien pour le moment !), j'ai un message d'erreur qui me dit :
et deux warning qui me disent :error: variable-sized object may not be initialized
Et je ne comprend pas pourquoi alors si quelqu'un pourrait m'aider...warning: excess elements in array initialiser
warning: (near initialization for 'goute')
Partager