Partage
  • Partager sur Facebook
  • Partager sur Twitter

Return d'une valeur d'une fonction

little bleme

    1 janvier 2006 à 15:00:05

    voila mon code :
    au début ca part de la :


    int vitesse_G1 = 0, pvHero = 20, pv_GR = 20, GR = 1;

    if (vitesseHero > vitesse_G1)
    {
                        vitesseHero_la_plus_grande(GR,guerrier1,nomHero,raceHero,arme1Hero,arme2Hero,armureHero,dommagesHero,vitesseHero,defHero);
    }


    voila la fin de la fonction vitesseHero_la_plus_grande :

    if (pvHero == 0)
    {
       printf("Vous tombez a terre. Du sang coule sur votre visage.C'est la fin.\n");
       printf("Vous avez perdu...\n\n");
       printf("Appuyez sur une touche pour terminer...");
       getchar();
       return 0;
    }
    else if (pv_GR == 0)
    {
         printf("Votre adversaire tombe a vos pieds. La foule vous acclame mais vous \nne l'entendez pas.\n");
         printf("Sans  plus attendre vous quittez le centre de l'amphitheatre pour entrer\n dans la salle de repos.\n\n");
         printf("Appuyez sur une touche pour continuer.");
         getchar();
         return GR = 0;
    }


    Puis ca revient au fichier source de départ et voila ce que je fais :

    if (GR == 0)
    {
        G1 = 0;
    }


    seulement malgré mon "return GR = 0;" dans ma fonction vitesseHero_la_plus_grande , quand je reviens au fichier source de départ, GR est toujours égal à 1 ...

    vous auriez pas une idée pour arranger ca ?
    • Partager sur Facebook
    • Partager sur Twitter
      1 janvier 2006 à 15:05:30

      if (pvHero == 0)
      {
      printf("Vous tombez a terre. Du sang coule sur votre visage.C'est la fin.\n");
      printf("Vous avez perdu...\n\n");
      printf("Appuyez sur une touche pour terminer...");
      getchar();
      return GR = 0; // ceci peut-être?
      }
      • Partager sur Facebook
      • Partager sur Twitter
        1 janvier 2006 à 15:14:34

        c'est la fonction qui renvoie une valeur, ce n'est pas la variable ! tu dois donc faire ceci pour la fonction :

        if (pvHero == 0)
        {
        printf("Vous tombez a terre. Du sang coule sur votre visage.C'est la fin.\n");
        printf("Vous avez perdu...\n\n");
        printf("Appuyez sur une touche pour terminer...");
        getchar();
        GR = 0// donne la valeur 0 à la variable GR
        return GR; // renvoi la variable GR
        }


        et cela pour la condition :

        if (vitesseHero_la_plus_grande == 0)  // c'est la fonction qui vaut 0 !
        {
            G1 = 0;
        }


        voilà, je pense que ça marchera si tu fais comme ça !

        @+
        • Partager sur Facebook
        • Partager sur Twitter
          1 janvier 2006 à 15:35:37

          Pointeurs p0wa :p

          Je ne crois pas que la solution du dessus règle ton problème, vu que la fonction vitesseHero_la_plus_grande(..) retourne dans tout les cas 0 (que le joueur gagne ou perde).

          Mais si tu veux modifier une variable à l'intérieur d'une fonction, ya pas 36 solutions, c'est soit tu utilises des variables globales, soit des pointeurs (je ne crois pas que les réferences existent en C).

          En gros ta fonction vitesseHero_la_plus_grande(..), au lieu de prendre comme argument un long GR devra prendre un long* pGR, quand tu l'appelles tu mets : vitesseHero_la_plus_grande(&GR, ...), et à l'intérieur pour changer la valeur de GR tu fais simplement : *pGR = 0;

          M'enfin si tu connais pas les pointeurs laisse tomber ça... :p
          Moi je vois pas d'autres solutions... :euh:
          • Partager sur Facebook
          • Partager sur Twitter
            1 janvier 2006 à 15:38:33

            En effet là dans ce cas c'est les pointeurs.
            Variable globale c'est pas optimisé du tout.

            M@téo va certainement attaquer ça très bientôt dans son cours.. Mais il y a déjà un tuto dessus : http://www.siteduzero.com/tuto-3-434-0-les-pointeurs-en-c-c.html
            • Partager sur Facebook
            • Partager sur Twitter
              1 janvier 2006 à 16:20:34

              donc c'est sûr, y a aucune autre solution a part les pointeurs ??
              • Partager sur Facebook
              • Partager sur Twitter
                1 janvier 2006 à 16:56:12

                Suivant le cas, on peut tout simplement faire
                GR = vitesseHero_la_plus_grande(GR, guerrier1, nomHero, raceHero, arme1Hero, arme2

                Mais je pense que si tu ne l'as pas fait, c'est que ça ne correspond pas au but de ta fonction (difficile de voir ça avec un bout de code).

                De toutes façons les pointeurs sont indispensables en C, même si ça peut paraître un peu prise de tête au début, il ne faut pas hésiter à se lancer dedans ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  1 janvier 2006 à 18:53:10

                  bon ben je vais essayer, merci ^^
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Return d'une valeur d'une fonction

                  × 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