IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

pointeur sur structure tableau statique


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 12
    Points
    12
    Par défaut 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 : 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
    #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 : 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
    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

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    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
    Ta fonction qui fonctionne utilise un pointeur vers un tableau de particule.

    Dans ta fonction qui ne fonctionne pas tu utilise l'opérateur flèche pour accéder aux données d'une particule. Pour cela il faudrait que ton tableau soit un tableau de pointeur sur des particules, ce qui n'est pas le cas.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Ah ok merci pour l'information donc selon toi, comment devrai-je faire pour pouvoir utiliser un pointeur vers un tableau statique car là je vois juste cela est-ce bon:

    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
     
    typedef struct Particule {
          part particule[MAX_PARTICULE];         
    } Particule;
     
    typedef struct part {
         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;
    } part;
    En gros si j'ai bien compris c'est cela qu'il faut faire
    Merci encore de ta gentillesse.
    Amicalement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pointeur sur structure et tableau
    Par jhonbouda dans le forum Débuter
    Réponses: 3
    Dernier message: 14/10/2014, 07h20
  2. Tableau de pointeurs sur Structure
    Par kenzo75 dans le forum C
    Réponses: 18
    Dernier message: 02/02/2013, 09h24
  3. Pointeur sur un tableau de structures
    Par klakman dans le forum Débuter
    Réponses: 7
    Dernier message: 28/09/2009, 11h06
  4. Réponses: 8
    Dernier message: 17/09/2008, 12h11
  5. Références et pointeurs sur un tableau
    Par smag dans le forum C++
    Réponses: 2
    Dernier message: 01/03/2005, 20h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo