Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jeu en C

problème

Anonyme
    4 décembre 2005 à 23:23:54

    Bonsoir(ou bonjour, tout dépend de l'heure à laquelle vous me lisez ^^)!

    J'ai voulu créer un petit jeu en C, mais lorsque je lance la compilation, il me dit :
    "multiple definition of "main", fisrt defined here et id returned 1 exit status"

    Voici mon code source :

    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
    int prop, mystere, i;
    mystere=7;
       printf(" Ceci est un jeu, le but est de deviner le nombre secret compris entre 1 et 10, \n a vous d'en proposer le moins possible, vous n'aurez droit qu'a 5 propositions! \n Le programme vous indiquera si la solution est superieure ou inferieur  votre \n\n proposition! \n\n ");
    for (i=4 ; i==0; i=i-1)
    {

       printf("Attention, il ne vous reste que %d chance(s)! \n", &i);
       printf(" Veuillez entrer un nombre ");
       scanf("%d", &prop);
    if (prop > mystere)
    {
       printf(" Cherchez un nombre plus petit! \n\n ");
      system("PAUSE");
    }
     else if (prop < mystere)
    {
       printf(" Cherchez un nombre plus grand! \n\n ");
      system("PAUSE");
    }
     else if (prop == mystere)
    {
       printf(" Felicitation! Effectivement, la solution etait bien %d ! ", &prop);
      system("PAUSE");
    }
      return 0;
    }
    }


    Pouvez vous me dire pourquoi mon code n'aboutie pas? Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      4 décembre 2005 à 23:49:57

      Salut +quezero. déjà une chose importante que j'aimerais te dire, c'est de penser à bien indenter ton code (a chaque fois que tu commences un nouveau bloc, pense a faire un TAB). Cela t'aideras à y voir beaucoup plus clair et te permettra de voir tes erreurs plus facilement dans ton code.
      Pour répondre à ton pb, c'est juste que ton return 0, tu l'a mis dans le mauvais bloc. Il faut que tu le mette juste avant de sortir de ton bloc main. Voilà, normalement après ca marche nikel, t'as plus qu'a jouer.
      T'obtiens ca.

      #include <stdio.h>
      #include <stdlib.h>

      int main(int argc, char *argv[])
      {
              int prop, mystere, i;
              mystere=7;
              printf(" Ceci est un jeu, le but est de deviner le nombre secret compris entre 1 et 10, \n a vous d'en proposer le moins possible, vous n'aurez droit qu'a 5 propositions! \n Le programme vous indiquera si la solution est superieure ou inferieur  votre \n\n proposition! \n\n ");
              for (i=4 ; i==0; i=i-1)
              {
                      printf("Attention, il ne vous reste que %d chance(s)! \n", &i);
                      printf(" Veuillez entrer un nombre ");
                      scanf("%d", &prop);
                      if (prop > mystere)
                      {
                              printf(" Cherchez un nombre plus petit! \n\n ");
                              system("PAUSE");
                      }
                      else if (prop < mystere)
                      {
                              printf(" Cherchez un nombre plus grand! \n\n ");
                              system("PAUSE");
                      }
                      else if (prop == mystere)
                      {
                              printf(" Felicitation! Effectivement, la solution etait bien %d ! ", &prop);
                              system("PAUSE");
                      }
              }
              return 0;
      }

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        5 décembre 2005 à 18:16:19

        Tout d'abord, merci pour ta réponse rapide! :)
        Mais maintenant je suis confronté à un nouveau problème.
        Quand j'execute mon programme, il se ferme tout de suite, du coup, j'ai rajouté une pause à la fin ^^ ! Mais ça m'a fait comprendre que la boucle ne s'executait pas o_O ! Mon programme ne lit que :

        #include <stdio.h>
        #include <stdlib.h>

        int main(int argc, char *argv[])
        {

               system("PAUSE");           
               return 0;
        }

        J'aimerais aussi ajouté une valeur aléatoire à "mystere", pour que le jeu deviene plus "amusant" :-° ... Est-ce possible?

        Merci :)
        • Partager sur Facebook
        • Partager sur Twitter
          5 décembre 2005 à 19:47:27

          Oui j'avais fais un jeu parreil:

          #include <cstdlib>
          #include <iostream>
          #include "windows.h"

          using namespace std;

          int test_nombre (int nombre_cherche, int nombre, int i)
          {
              if (nombre_cherche == nombre)
              {
                 cout << "Bravo, tu as trouve le nombre en " << (i+1) << "coups" << endl;
                 return true;
              }
              if (nombre_cherche > nombre)
              {
                 cout << "Trop petit..." << endl;
                 return false;
              }
              if (nombre_cherche < nombre)
              {
                 cout << "Trop grand..." << endl;
                 return false;
              } 
          };

          int main(int argc, char *argv[])
          {
              bool quit = false;
              while (!quit)
              {
                    int nombre_cherche;
                    int nombre;
                    bool gagne;
                    int niveau;
                    int choix;
                    srand(GetTickCount());
                    nombre_cherche = ((rand()%(1024)/10)-1);
                    cout << "Bienvenue sur Bon nombre, le jeu qui fait des ravages :-P" << endl;
                    cout << endl << endl;
                    cout << "Le principe est tres simple, votre but est de trouver le nombre inconnu." <<  endl;
                    cout << endl << "    Niveau 1: Facile   7 coups maxi" << endl << "    Niveau 2: Moyen   6 coups maxi" << endl << "    Niveau 3: Difficile    5 coups maxi" << endl << "    1111 pour quitter" << endl << endl;
                    cin >> choix;
                    cout << endl << endl << endl << endl << endl;
                    switch (choix)
                    {
                           case 1: {niveau = 7; break;}
                           case 2: {niveau = 6; break;}
                           case 3: {niveau = 5; break;}
                           case 1111: {niveau = 0 ; quit = true; break;}
                           default : {niveau = 7; break;}
                    }
                    for (int i=0;i<niveau;i++)
                        {
                             cout << "Entrez un nombre entre 1 et 100: " << endl;
                             cin >> nombre;
                             gagne = test_nombre (nombre_cherche,nombre,i);
                             if (nombre == 1111)
                             {
                                quit = true;
                                break;
                             }
                             if (gagne)
                             {
                                cout << endl<< endl<< endl<< endl<< endl<< endl;
                                break;
                             }
                             if (!gagne && i == (niveau-1))
                             {
                                cout << endl << endl << "Perdu, le chiffre etait: " << nombre_cherche << endl<< endl<< endl<< endl<< endl<< endl;
                                break;
                             }
                        }         
              }
              return EXIT_SUCCESS;
          }
          • Partager sur Facebook
          • Partager sur Twitter
            5 décembre 2005 à 20:18:57

            dans ta boucle remplace i==0 par i!=0, car for boucle tant que cete condition est vraie, et pas jusqu'à ce que ceette condition soit vraie ;)
            • Partager sur Facebook
            • Partager sur Twitter
              5 décembre 2005 à 20:31:04

              Y'aurais pas un petit blème dans ton premier "printf();" ? :o

              Tu as mis
              printf("Attention, il ne vous reste que %d chance(s)! \n", &i);


              Ce serais pas plutôt "i" à la fin, plutôt que "&i" ? :-°

              Sinon pour une valeur aléatoire, fais un rand();
              ou même un "rand()*0.0003" pour un nombre entre zéro et neuf
              • Partager sur Facebook
              • Partager sur Twitter
                5 décembre 2005 à 21:06:30

                Un petit truc en plus :

                i=i-1 = i--


                C'est mieux :p

                deLux
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  5 décembre 2005 à 21:20:54

                  Merci beaucoup pour votre aide, j'ai encore un peu modifié le code source (avec une aide ^^)! Le voici :
                  #include <stdio.h>
                  #include <stdlib.h>
                  #include <time.h>

                  int main(int argc, char *argv[])
                  {
                      srand (time (NULL));
                    int prop, mystere, i;
                       mystere=rand()%10+1;
                       printf(" Ceci est un jeu, le but est de deviner le nombre secret compris entre 1 et 10, \n a vous d'en proposer le moins possible, vous n'aurez droit qu'a 5 propositions! \n Le programme vous indiquera si la solution est superieure ou inferieur  votre \n\n proposition! \n\n ");
                      for (i=5 ; i!=0; i=i-1)
                           {
                                           if (i<4)
                                           {           
                               printf("Attention, il ne vous reste que %d chance(s)! \n", i);
                                           }
                               printf(" Veuillez entrer un nombre ");
                               scanf("%d", &prop);
                                           if (prop > mystere)
                                            {
                                            printf(" Cherchez un nombre plus petit! \n\n ");
                                            }
                                           else if (prop < mystere)
                                            {
                                            printf(" Cherchez un nombre plus grand! \n\n ");
                                            }
                                           else if (prop == mystere)
                                            {
                                            printf(" Felicitation! Effectivement, la solution etait bien %d ! ", mystere);
                                            system("pause");
                                            return 0;
                                            }
                             }
                           if (i==0)
                              {
                              printf("Desole, mais vous avez epuise toutes vos chances, vous avez perdus!\n");
                              }     
                         system("PAUSE");           
                         return 0;
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 décembre 2005 à 21:27:10

                    Non, c'est pas spécialement mieux ! Bah oui, pour lui c'est peut-être plus explicatif i = i + 1; que --i; (d'ailleurs il vaut mieux que i--; ;) !)

                    Enfin... C'est ce que j'en pense, moi :p
                    Mon avis n'est pas forcément le meilleur ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 décembre 2005 à 21:35:24

                      Oui c'est vrai si c'est plus explicite pour lui ! :)

                      J'ai cherché dans mes cours --i et i-- :

                      y = x--; équivaut à y = x; x = x - 1
                      y = --x; équivaut à x = x - 1; y =x;

                      Le premier c'est post-incrémentation et le deuxième pré-incrémentation.

                      Voila pour la petite histoire :D

                      Edit :

                      #include <stdio.h>
                      #include <stdlib.h>

                      int main(int argc, char *argv[])
                      {
                              int i = 0;
                              printf("%d\n",i);
                              i = i--;
                              printf("%d\n",i);
                              i = 0;
                              printf("%d\n",i);
                              i = --i;
                              printf("%d\n",i);

                              system("PAUSE");
                              return 0;
                      }


                      Resultat dans la console :
                      0
                      0
                      0
                      -1
                      Appuyez sur une touche pour continuer...

                      deLux
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 décembre 2005 à 13:19:12

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

                        int main(int argc, char *argv[])
                        {
                            srand (time (NULL));
                          int prop, mystere, i;
                             mystere=rand()%10+1;
                             printf(" Ceci est un jeu, le but est de deviner le nombre secret compris entre 1 et 10, \n a vous d'en proposer le moins possible, vous n'aurez droit qu'a 5 propositions! \n Le programme vous indiquera si la solution est superieure ou inferieur  votre \n\n proposition! \n\n ");
                            for (i=5 ; i!=0; i--)
                                 {   
                                     printf("Attention, il ne vous reste que %d chance(s)! \n", i);
                                     printf(" Veuillez entrer un nombre ");
                                     scanf("%d", &prop);
                                                 if (prop > mystere)
                                                  {
                                                  printf(" Cherchez un nombre plus petit! \n\n ");
                                                  }
                                                 else if (prop < mystere)
                                                  {
                                                  printf(" Cherchez un nombre plus grand! \n\n ");
                                                  }
                                                 else if (prop == mystere)
                                                  {
                                                  printf(" Felicitation! Effectivement, la solution etait bien %d !\n ", mystere);
                                                  system("PAUSE");
                                                  return 0;
                                                  }
                                   }
                                   
                               printf("Desole, mais vous avez epuise toutes vos chances, vous avez perdus!\n");
                           
                               system("PAUSE");           
                               return 0;
                        }


                        voila j'ai un peu modifier ton code en supprimant
                        if (i<4)
                        à la ligne 16 mais aussi
                        if (i==0)
                        ces deux if me paraissant inutiles.
                        En plus je te propose mais là c'est toi qui voit d'afficher la valeur du chiffre alléatoire même quand on perd et d'essayer de modifier ta syntaxe pour que les joueurs aient le choix de recommencer mais tout ca c'est qu'un avis personel :)

                        a++
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Jeu en C

                        × 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