Probleme de pointeur

Résolu
Jackyzgood Messages postés 26 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 6 mars 2010 - 12 juin 2009 à 12:45
Jackyzgood Messages postés 26 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 6 mars 2010 - 12 juin 2009 à 13:39
Bonjour a tous !

J'ai un petit soucis avec un bout de code et je ne vois pas ou est le soucis .... Je cherche a faire un petit shoot'em up, j'ai commencé par ce qui est simple et ce que je sais faire, mais je suis tombé sur un os ...

Dans ma fonction main j'ai ce morceau de code :

        //gestion des tirs  
        tempsActuel = SDL_GetTicks();
        if((donnees.click_gauche)&&(tempsActuel - tempsPrecedant) >= intervalTir)
        {
            donnees.positionTir[ compteur ] = donnees.position_souris;
            compteur++;
            if(compteur > 28)
            {compteur = 0;}
            tempsPrecedant = tempsActuel;
           
        }


Cette partie la gère la cadence de tir (via la différence de temps et le GetTicks) et la position de chaque tir (grace a la structure donnees.positionTir[ compteur ] et au compteur)

Jusque la pas de probleme, mais si j'essaye de déporter ce morceau dans une fonction :

void gestionDesTirs(int *tempsPrecedant, int intervalTir, int *compteurTir, struct StructurePrincipale *donnees)
{
        //gestion des tirs
       
        //de maniere a déterminer le temps entre 2 click on utilise 2 variables temps
        int tempsActuel = SDL_GetTicks();
       
        //S'il y a un click et que le temps entre les 2 click est superieur a l'interval
        if((*donnees).click_gauche && (tempsActuel - *tempsPrecedant) >= intervalTir)
        {
            //alors la position n est égale a la position de la souris                      
            (*donnees).positionTir[ *compteurTir ] = (*donnees).position_souris;
           
            //on incrémente
            *compteurTir++;
           
            //si le compteur dépasse la taille du tableau alors on le remet a 0
            if(*compteurTir > 28)
            {*compteurTir = 0;}
           
            //on réinitialise le temps
            *tempsPrecedant = tempsActuel;
           
        }
}

Mais la le compteur ne semble plus s'incrémenter... Pourtant je ne vois pas ou j'aurais pu faire une betise...

Quelqu'un a une idée ? Merci d'avance.

2 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
12 juin 2009 à 13:34
il y a des règles de priorité des opérateurs, et ++ est plus haut que *;
donc :
(*compteurTir)++;
3
Jackyzgood Messages postés 26 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 6 mars 2010
12 juin 2009 à 13:39
Merci !! Ca marche !

En fait c'était tout bête !
0
Rejoignez-nous