Probleme de pointeur [Résolu]

Signaler
Messages postés
26
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
6 mars 2010
-
Messages postés
26
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
6 mars 2010
-
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

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

Merci !! Ca marche !

En fait c'était tout bête !