Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C]Problèmes avec pointeurs!!!

de quoi rendre fou

    26 mai 2006 à 22:57:05

    Salut!
    J'ai encore un problème ^^

    Voilà, j'ai deux fonctions l'une dans l'autre et j'aimerai envoyer un pointer à la dernière pour modifier le score qui se trouve dans le main.

    Voici un schéma :)

    long score_actuel = 0;
    long *score = &score_actuel;
    char score2[50] = "";



    do
    {
    //écriture du score
    sprintf(score2, "Score : %d", *score_actuel); //ICI PROBLEME
    texte = TTF_RenderText_Shaded(police, score2, couleurBlanche, couleurNoire);
               
           
    position_texte.x = 50;
    position_texte.y = 655;
    SDL_BlitSurface(texte, NULL, ecran, &position_texte);

    deplacerJoueur(carte, &positionJoueur, HAUT, &score); //ICI PROBLEME
    // voici la partie de la fonction deplacerJoueur qui nous interesse:
    void deplacerJoueur(int carte[][NB_BLOCS_HAUTEUR], SDL_Rect *pos, int direction, long *score) //ICI PROBLEME
    {

    // voici la partie de la fonction enleverPoint qui nous interesse:

    enleverPoint(&carte[pos->x][pos->y - 1], &score); //ICI PROBLEME
    void enleverPoint(int *premiereCase, long *score) //ICI PROBLEME
    {



        if (*premiereCase == POINT)
        {
           
        *premiereCase = VIDE;
        *score++;  //ICI PROBLEME
       
        }
    }
    }

    }while(continuer==1);



    Mes problèmes, comme marqués ci-dessus par la phrase:

    //ICI PROBLEME


    sont les pointeurs!!!
    je ne sais pas si je dois envoyer l'adresse, le pointeur ou la variable...enfin bref je suis PERDU! :(

    Merci d'avance!
    • Partager sur Facebook
    • Partager sur Twitter
      27 mai 2006 à 1:44:16


      do
      {
      //écriture du score
      sprintf(score2, "Score : %d", *score_actuel); //ICI PROBLEME (ca donne quoi?)
      texte = TTF_RenderText_Shaded(police, score2, couleurBlanche, couleurNoire);
                 
             
      position_texte.x = 50;
      position_texte.y = 655;
      SDL_BlitSurface(texte, NULL, ecran, &position_texte);

      deplacerJoueur(carte, &positionJoueur, HAUT, score); //ICI PROBLEME
      /* Tu ne doit pas envoyer l'adresse du pointeur mais la valeur contenue dans le pointeur uqi est en fait: l'adresse de la variable donc tu doit enlever le & */
      // voici la partie de la fonction deplacerJoueur qui nous interesse:
      void deplacerJoueur(int carte[][NB_BLOCS_HAUTEUR], SDL_Rect *pos, int direction, long *score) //ICI PROBLEME
      /* Il devrait être réglé si tu change le truc ci haut^*/
      {

      // voici la partie de la fonction enleverPoint qui nous interesse:

      enleverPoint(&carte[pos->x][pos->y - 1], score); //ICI PROBLEME
      /* Pareil a un peu plus haut: enlever le & */
      void enleverPoint(int *premiereCase, long *score) //ICI PROBLEME
      /* Devrais encore une fois ^petre réglé si tu moidifie la ligne plus haut :) */
      {



          if (*premiereCase == POINT)
          {
             
          *premiereCase = VIDE;
          *score++;  //ICI PROBLEME
          /* Devrais encore un fois être réglé si tu change les 2 petit trucs :) */
         
          }
      }
      }

      }while(continuer==1);



      J'ai commenté et corrigé les endroits erronés :) Ça devrais fonctionner :)
      • Partager sur Facebook
      • Partager sur Twitter
        27 mai 2006 à 10:55:05

        Salut et merci de t'être interessé à mon problème! :D
        Mais j'ai une erreur à la compilation à cette ligne:

          sprintf(score2, "Score : %d", *score_actuel);


        L'erreur:

        invalid type argument of `unary *'


        Merci encore! ^^
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          27 mai 2006 à 11:05:43

          score_actuel est de type long donc tu ne peux lui appliquer le * (opérateur de déréférenciation de pointeur, qui peut signifier "aller chercher la valeur à cette adresse"). Et puis, comme c'est un long, c'est %ld :
          sprintf(score2, "Score : %ld", score_actuel);
          • Partager sur Facebook
          • Partager sur Twitter
            27 mai 2006 à 11:28:15

            Salut!
            Merci de ton aide, j'ai plus d'erreur de compilation mais le score ne se modifie pas! :(

            Je voudrais vous envoyer le code complet mais juste, j'aimerai l'indenté et je me rapelle qu'une personne proposait un lien dans sa signature pour indenter les codes, si qqun s'en rapelle je pourrai vous envoyer le code indenté et commenté pour une meilleure lisibilité.

            Sinon, j'envoie le code comme il est et commenté...

            A++
            • Partager sur Facebook
            • Partager sur Twitter

            [C]Problèmes avec pointeurs!!!

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown