Partage
  • Partager sur Facebook
  • Partager sur Twitter

[console] les fonctions

les fonctions ne fonctionnent pas...

    8 mai 2006 à 16:53:31

    Bonjour a tous,

    J'ai un problème avec un jeu de rôle que je suis en train de faire. Les fonctions ne fonctionnent pas...

    Pas de problème à la compilation, mais il ne m'exécute pas les fonctions...
    J'utilise Dev-c++

    Voici mon code source:

    #include <time.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <string.h>

    char chance (char nbrPVie, char nbrArgent, char nbrChance, char nbrPositionJoueur);
    char changementNbrEnLtr (char nbrPositionJoueur, char ltrPositionJoueur[1000]);
    void pause();


    int main(int argc, char *argv[])
    {
      char nbrChoixPerso = 0;
      char nbrPVie = 0,nbrPVieMax = 0, nbrEx = 0, nbrNiveau = 1, nbrPAttaque = 0, nbrPDefence = 0, nbrArgent = 100;
      char ltrPositionJoueur[1000] = "au village";
      char nbrPositionJoueur = 1;
      char nbrChoixAction = 0;
      char nbrChance = 0;
       
      printf("\nL'aventure vous guette a chaque tournant, \n");
      printf("Donc, soyez prudent...\n\n\n\n\n");
       
       
      {
      printf("Qui voulez-vous etre ?\n\n");
      printf("----- Choix du personnage ----- \n\n");
      printf("1 Ogre     : tres fort, tres bete, tres resitant; \n");
      printf("2 Orque    : fort, intelligent, resistant; \n");
      printf("3 Magicien : pas fort, tres intelligent, rapide, resitant; \n\n");
     
      printf("Appuiez sur 1, 2 ou 3 pour choisir votre personnage.\n");
      scanf("%ld", &nbrChoixPerso);
      printf("\n");
      }
     
      switch (nbrChoixPerso)
      {
         case 1:   
            printf("Vous avez choisi l'Ogre!\n\n\n\n\n\n");
            nbrPVie = 100;
            nbrPVieMax = 100;
            nbrPAttaque = 10;
            nbrPDefence = 5;
         break;     
         
         case 2:     
            printf("Vous avez choisi l'Orque!\n\n\n\n\n\n");
            nbrPVie = 80;
            nbrPVieMax = 80;
            nbrPAttaque = 8;
            nbrPDefence = 4;
         break;
             
         case 3:   
            printf("Vous avez choisi le Magicien!\n\n\n\n\n\n");
            nbrPVie = 80;
            nbrPVieMax = 80;
            nbrPAttaque = 5;
            nbrPDefence = 4;
        break;   
        }   
       
        char changementNbrEnLtr (char nbrPositionJoueur, char ltrPositionJoueur[1000]);
                 
         //Choix de l'action   
         printf("Vous etez %s, que voulez-vous faire? \n\n", ltrPositionJoueur);
         printf("----- Choix de l'action ----- \n\n");
         
         
         switch (nbrPositionJoueur)
         {                       
                case 1:
                     switch (nbrNiveau)
                     {
                            case 1:
                                 printf("1 : Aller chez l'armurier 'Tueur & fils' \n");
                                 printf("2 : Aller a l'auberge qui a l'air miteuse \n");
                                 printf("3 : Aller chez le sage (c'est minuscule)\n");
                                 printf("4 : Aller au magasin 'La fleur fanee'\n\n");
                                 printf("5 : Aller chez le magicien 'Abracadabra' \n\n");
                                 
                                 printf("Appuiez sur 1, 2, 3, 4 ou 5 pour choisir votre action.\n");
                                 scanf("%ld");
                                 printf("\n");
                                 
                                 switch (nbrChoixAction)
                                 {
                                        case 1:
                                             printf("Vous allez chez l'armurier. \n\n\n");
                                             return nbrPositionJoueur = 1.1;
                                        break;
                                       
                                        case 2:
                                             printf("Vous allez a l'auberge. \n\n\n");
                                             return nbrPositionJoueur = 1.2;
                                        break;
                                       
                                        case 3:
                                             printf("Vous allez chez le sage. \n\n\n");
                                             return nbrPositionJoueur = 1.3;
                                        break;
                                       
                                        case 4:
                                             printf("Vous allez au magasin. \n\n\n");
                                             return nbrPositionJoueur = 1.4;
                                        break;
                                       
                                        case 5:
                                             printf("Vous allez chez le magicien. \n\n\n");
                                             return nbrPositionJoueur = 1.5;
                                        break;
                                 }
                                 break;
                     }
                     break;
         }
         // /Choix de l'action
         
         changementNbrEnLtr;
         chance;
         
         printf("%s", ltrPositionJoueur);
         system("PAUSE");   
         return 0;
         }
         
         
         
         char chance (char nbrPVie, char nbrArgent, char nbrChance, char nbrPositionJoueur)         
         {
         //chance?
         srand(time(NULL));
         nbrChance = (rand() % (5 - 1 + 1)) + 1;
                 
         switch (nbrChance)
         {
                case 1:
                     printf("Vous etiez en train de compter le nombre de Dalles(tm)\n et vous n'aviez pas vu le lampadaire.\n");
                     printf("Vous perdez 10 points de vie \n\n\n");
                     return nbrPVie == nbrPVie -10;
                break;
               
                case 2:
                     printf("Comme vous etiez fatigue, vous vous etes assoupis contre le mur, \n et des voleurs sont venus.\n");
                     printf("Vous perdez 8 pieces d'or.\n\n\n");
                     return nbrArgent == nbrArgent - 8;
                break;
               
                case 3:
                     printf("Vous tombrez dans un trou.\n");
                     printf("Vous perdez 5 pieces d'or.\n\n\n");
                     return nbrArgent == nbrArgent - 5;
                break;
               
                case 4:
                     printf("vous arrivez sans encombre .\n\n\n");
                break;
               
                case 5:
                     printf("Vous trouvez la bourse de quelqu'un...\n");
                     printf("Vous remasez 5 pieces d'or.\n\n\n");
                     return nbrArgent == nbrArgent + 5;
                break;
         }
         }
         // /Chance?
         
         
         
         
         char changementNbrEnLtr (char nbrPositionJoueur, char ltrPositionJoueur[1000])
         {
              //changement de nbrPositionJoueur en ltrPositionJoueur   
         switch (nbrPositionJoueur)
         {
                case 1:
                     if (nbrPositionJoueur = 1.1)
                     {  ltrPositionJoueur == "au village, chez l'armurier";
                     }   
                     if (nbrPositionJoueur = 1.2)
                     {  ltrPositionJoueur == "au village, a l'auberge";
                     }   
                     if (nbrPositionJoueur = 1.3)
                     {  ltrPositionJoueur == "au village, chez le sage";
                     }     
                     if (nbrPositionJoueur = 1.4)
                     {  ltrPositionJoueur == "au village, au magasin";
                     }
                     if (nbrPositionJoueur == 1)
                     {  ltrPositionJoueur == "au village";
                     }
                break;
         }
         }       
        // /changement de nbrPositionJoueur en ltrPositionJoueur
     


    Vous devriez avoir vu cette ligne :
    printf("%s", ltrPositionJoueur);

    Elle sert à vérifier si la variable ltrPositionJoueur a bien été traitée par la fonction "changementNbrEnLtr" : Il m'affiche un smilie...

    Merci d'avance à ceux qui m'ont aidé.
    • Partager sur Facebook
    • Partager sur Twitter
      8 mai 2006 à 17:25:14

      ta dernière fonction ne retourne rien ... pas normal pour un char

      switch (nbrPositionJoueur)
           {
                  case 1:
                       if (nbrPositionJoueur = 1.1)
                       {  ltrPositionJoueur == "au village, chez l'armurier";
                       }   
                       if (nbrPositionJoueur = 1.2)
                       {  ltrPositionJoueur == "au village, a l'auberge";
                       }   
                       if (nbrPositionJoueur = 1.3)
                       {  ltrPositionJoueur == "au village, chez le sage";
                       }     
                       if (nbrPositionJoueur = 1.4)
                       {  ltrPositionJoueur == "au village, au magasin";
                       }
                       if (nbrPositionJoueur == 1)
                       {  ltrPositionJoueur == "au village";
                       }
                  break;
           }


      J'adore, tu as bien compris le principe du switch ^^:p

      au fait c'est quoi ton problème ?...
      • Partager sur Facebook
      • Partager sur Twitter
        8 mai 2006 à 17:29:05

        Ca m'avait fait pareil avec le TP de mateo sur le pendu. Je m'étais été de son correction et à l'execution je voyais des smiles.

        Peut-etre parce que le caractére a afficher n'est pas bon.


        EDIT : Et ton dernier switch ne sert a rien.

        EDIT 2 :
        Portion de code :

        changementNbrEnLtr;
        chance;

        Tu cherche a executer une fonction mais tu n'envoies rien, bizarre non ?

        Tu inclues string et math.h mais tu ne les utilise pas ??

        EDIT 3 ( faudra que j'arrete lol) :
        return nbrPositionJoueur = 1.1;

        return nbrArgent == nbrArgent - 5;

        ?????????????????? o_Oo_O

        Comprend pas trop là.

        Tu cherches a faire quoi au juste?
        Un jeu ou tu peux te déplacer? Faire des actions ?

        • Partager sur Facebook
        • Partager sur Twitter
          8 mai 2006 à 17:59:30

          Piclem :

          Le problème est que les fonctions ne s'exécutent pas...

          merci


          azerty9 :

          "EDIT 1:"
          Le quel switch ne sert à rien?

          "EDIT 2:"
          J'inclus les librairies que je trouve comme ca je suis sûr.

          "EDIT 3:"
          je ne comprends pas ce que tu veux dire par ca :
          return nbrPositionJoueur = 1.1;

          return nbrArgent == nbrArgent - 5;

          C'est (censé) un jeu ou l'on incarne un personnage, et ou on choisit ce que l'on veut faire. Mais ce n'est que du texte : pas d'images, rien que du texte.

          Merci
          • Partager sur Facebook
          • Partager sur Twitter
            8 mai 2006 à 18:00:32

            Ok.
            Tu as un peu corrigé les erreurs ?

            Le dernier switch avec des if dedans. C'est pas extra.

            Tu n'utilise que :
            #include <time.h>
            #include <stdio.h>
            #include <stdlib.h>

            Les return c'est pour les fonctions.
            • Partager sur Facebook
            • Partager sur Twitter
              8 mai 2006 à 18:05:56

              Oui, j'ai corrigé, mais ca ne fonctionne pas plus...

              Dans cette portion du code :
              char changementNbrEnLtr (char nbrPositionJoueur, char ltrPositionJoueur[1000])
                   {
                        //changement de nbrPositionJoueur en ltrPositionJoueur   
                   switch (nbrPositionJoueur)
                   {
                          case 1:
                               if (nbrPositionJoueur = 1.1)
                               {  return ltrPositionJoueur = "au village, chez l'armurier";
                               }   
                               if (nbrPositionJoueur = 1.2)
                               {  return ltrPositionJoueur = "au village, a l'auberge";
                               }   
                               if (nbrPositionJoueur = 1.3)
                               {  return ltrPositionJoueur = "au village, chez le sage";
                               }     
                               if (nbrPositionJoueur = 1.4)
                               {  return ltrPositionJoueur = "au village, au magasin";
                               }
                               if (nbrPositionJoueur == 1)
                               {  return ltrPositionJoueur = "au village";
                               }
                          break;
                   }
                   }

              Il me met (le débugger) "[Warning]return makes interger from pointer whiout a cast", a tous les return et le programme s'exécute quand même (toujours le smilie qui apparait)
              • Partager sur Facebook
              • Partager sur Twitter

              [console] les fonctions

              × 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