Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme avec le score

Sujet résolu
    1 janvier 2006 à 10:15:02

    Bonjour et bonne année
    J'ai optimisé a fond le jeu plus ou moins mais il y a une erreur. J'ai mis un décomte de point (score=100):

    score-coups;

    Et ça ne marche pas car le score est toujour égale à 100.

    Voilà le code source de mon fichier qui contient les fonction (je crois pas que l'erreur proviennent de la fonction main)

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

    //Ci-dessous on génère la fonction aleatoire
    long aleatoire(long MIN, long MAX)
    {
         
         long nombreMystere;
         
         //Ci-dessous on génère un nombre aléatoire
         srand(time(NULL));
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             
             //Ci-dessous on retourne la valeur de nombreMystere
             return nombreMystere;
             
    }

    //Ci-dessous on génère la fonction valeurMAX
    long valeurMax(long choix)
    {
         
         long MAX;
         
         //Là on fait la condition
         switch(choix)
         {
          case 1:
                MAX=50;
                printf("Toi, t'es pas courageux!!");
                break;
               
          case 2:
                MAX=100;
                printf("Mouais, tu te défoule pas trop toi!!");
                break;
               
          case 3:
                MAX=1000;
                printf("La ca devient un petit peu corser!!");
                break;
               
          case 4:
                MAX=10000;
                printf("Quelle Patiance!!");
                break;
          case 0:
                printf("tu veux pas jouer\n");
                system("PAUSE");
                return 0;
                break;
     }
     printf("\n");
     getchar();
     system("CLS");
     return MAX;
    }


    void demandeNombre(long nombreEntre, long nombreMystere)
    {
         
         static long coups=0;
         
         while(nombreMystere!=nombreEntre)
         {
                            //On demande la valeur de nombreMystere
                            printf("Quel est le nombre mystere??\n");
                            scanf("%ld", &nombreEntre);
                            coups++;
                                                   
                           
                            if(nombreMystere>nombreEntre)
                            {
                                          printf("C'est plus grand!!!\n");
                            }
                           
                            else if(nombreMystere<nombreEntre)
                            {
                                          printf("C'est plus petit!!!\n");
                            }
                           
                            else
                            {
                                          printf("Bravo!! Tu as gagne en %ld coups\n", coups);
                            }
         
         }
         system("PAUSE");
         
    }

    void challenge(long nombreMystere, long nombreEntre)
    {
         long MAX, niveau=0, MIN=1, coups=0, score=100;
         
         printf("REGLE ;\nL'ordinateur choisi un nombre aleatoire entre 1 et MAX.\nNiveau 1 : MAX=10000\nNiveau 2 : MAX=100000\nNiveau 3 : MAX=1000000\nNiveau 4 : MAX=10000000\nNiveau 5 : MAX=100000000\nNiveau Ultime : MAX=999999999\n\nBonne Chance\n");
         system("PAUSE");
         system("CLS");
         
         //Niveau 1
         
         MAX=10000;
         
         
         //Ci-dessous on génère un nombre aléatoire
         srand(time(NULL));
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             
         printf("**********NIVEAU 1**********          Score : %ld\nEntre 1 et %ld\n\n\n", score, MAX);
         demandeNombre(nombreEntre, nombreMystere);
         score-=coups;
         system("CLS");
         
         //Niveau 2
         
         MAX=100000;
         coups=0;
         
         //Ci-dessous on génère un nombre aléatoire
         srand(time(NULL));
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             
             printf("**********NIVEAU 2**********          Score : %ld\nEntre 1 et %ld\n\n\n", score, MAX);
         demandeNombre(nombreEntre, nombreMystere);
         score-=coups;
         system("CLS");
         
         //Niveau 3
         
         MAX=1000000;
         coups=0;
         
         //Ci-dessous on génère un nombre aléatoire
         srand(time(NULL));
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             
             printf("**********NIVEAU 3**********          Score : %ld\nEntre 1 et %ld\n\n\n", score, MAX);
         demandeNombre(nombreEntre, nombreMystere);
         score-=coups;
         system("CLS");
         
         //Niveau 4
         
         MAX=10000000;
         coups=0;
         
         //Ci-dessous on génère un nombre aléatoire
         srand(time(NULL));
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             
             printf("**********NIVEAU 4**********          Score : %ld\nEntre 1 et %ld\n\n\n", score, MAX);
         demandeNombre(nombreEntre, nombreMystere);
         score-=coups;
         system("CLS");
         
         //Niveau 5
         
         MAX=100000000;
         coups=0;
         
         //Ci-dessous on génère un nombre aléatoire
         srand(time(NULL));
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             
             printf("**********NIVEAU 5**********          Score : %ld\nEntre 1 et %ld\n\n\n", score, MAX);
         demandeNombre(nombreEntre, nombreMystere);
         score-=coups;
         system("CLS");
         
         //Niveau Ultime
         
         MAX=999999999;
         coups=0;
         
         //Ci-dessous on génère un nombre aléatoire
         srand(time(NULL));
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             
             printf("**********NIVEAU ULTIME**********          Score : %ld\nEntre 1 et %ld\n\n\n", score, MAX);
         demandeNombre(nombreEntre, nombreMystere);
         score-=coups;
         printf("\n\n\nTu as %ld points", score);
         system("CLS");
    }


    et voici ma fonction main
    #include <stdio.h>
    #include <stdlib.h>
    #include "fonction.h"

    int main(int argc, char *argv[])
    {
    //Ci-dessous il y a les variables
        long nombreMystere = 0, nombreEntre = 0, ligne=0, choix=10, MAX = 0, MIN = 1, coups=1, joueur=3;
        //Ci-dessus il y a les variable
       
       
                       
        //On demande combien de joueur veulent jouer
        printf("Faites %ld pendant le jeu pour quitter!!\n1. Un Joueur\n2. Deux Joueurs\n", 0);
        scanf("%ld", &joueur);
       
        //Maintenant on fait les conditions
        switch(joueur)
        {
                      case 0:
                           system("PAUSE");
                           return 0;
                           break;
                           
                      case 1:
                           system("CLS");
                           /*Tous ce qui suit jusqu'a "break"
                           sert si un seul joueur veut jouer*/

                       

         
        //On demande la difficulté
        printf("Choisissez votre difficulter :\n1. Le nombre mystere sera entre 1 et 50\n2. Le nombre mystere sera entre 1 et 100\n3. Le nombre mystere sera entre 1 et 1000\n4. Le nombre mystere sera entre 1 et 10000\n\n5. Challenge\n");
        scanf("%ld", &choix);
                       
        MAX=valeurMax(choix);
       
        if(choix==5)
        {
                    challenge(nombreMystere, nombreEntre);
                    return 0;
        }

         
         //Maintenant on génère un nombre aléatoire.
        nombreMystere = aleatoire(MIN, MAX);
       
        //On fait la boucle avec while()
        demandeNombre(nombreEntre, nombreMystere);
        return 0;
        break;
       
        /*Voici la fin de la première partit
          Celle pour un mode "un joueur"  */

         
          case 2:
               //On demande le nombre mystere au joueur deux
               printf("Le joueur Deux doit choisir un nombre et le joueur Un doit le trouver\nJoueur Deux veuillez choisir un nombre\n");
               scanf("%ld", &nombreMystere);
               
               //On efface le tous pour que le joueur un ne voit pas le nombre mystere
               system("CLS");
       
        //On fait la boucle avec while() grace a la fonction demandeNombre
        demandeNombre(nombreEntre, nombreMystere);
           
    return 0;

    }          
     
        //Voilà c'est terminé
    }


    et voila mon fichier header
    long aleatoire(long MIN, long MAX);

    void demandeNombre(long nombreEntre, long nombreMystere);

    long valeurMax(long choix);

    void challenge(long nombreMystere, long nombreEntre);


    J'espère que vous allez trouver l'erreur.
    • Partager sur Facebook
    • Partager sur Twitter
      1 janvier 2006 à 10:31:41

      C'est pas mal le bordel ton code ! o_O
      Je vois même pas la fonction main .... (Effectivement, tu ne l'as pas mise !
      Mais ça permettrait de comprendre le code ! :p
      • Partager sur Facebook
      • Partager sur Twitter
        1 janvier 2006 à 10:42:04

        Pour un code plus clair essai des commentaires /**/ et non // :


                              /*---Déclarations des variables---*/

        long var1, var2;

                              /*---Introduction---*/

        printf("\nBienvenue !";);

                             /*---Menu général---*/

        printf("\n1.Frite\n2.Bannane");
        scanf("%ld", &var1);

                          /*...Switch Menu général...*/

        ...


        Voila c'est mieux que sa :



        long var1, var2;

        printf("\nBienvenue !");
        printf("\n1.Frite\n2.Bannane");//Menu
        scanf("%ld", &var1);
        ...


        Et essai d'espacer ton code ;)

        ++
        W!nn!3
        • Partager sur Facebook
        • Partager sur Twitter
          1 janvier 2006 à 13:43:08

          Merci j'ai changé le code mais il y a toujours le problème.

          Ca fait depuis l'année dernière que je travail sur le score(hein o_O , c'était que hier)
          • Partager sur Facebook
          • Partager sur Twitter
            1 janvier 2006 à 15:18:01

            Tu as deux variables coups, une dans ta fonction demandeNombre() et une dans ta fonction challenge().

            Dans la fonction challenge(), tu décrémentes score de coups, or la variable coups que tu utilise est celle de la fonction challenge qui est initialisée à 0 et qui ne bouge pas.

            Pour régler le problème, d'une part tu vires la variable coups de la fonction challenge, à partir de là soit tu mets la variable coups en globale, soit tu fais en sorte que ta fonction demandeNombre() retourne le nombre de coups à la fin de son execution.

            Suis-je clair ?? (je crois pas :-° )
            :p

            EDIT : au passage tant que j'y suis, il te faut inclure <time.h> pour pouvoir utiliser la fonction time(), mais je met ça sous le compte de l'inattention :p .
            D'autre part, ça ne sert à rien d'inclure <stdio.h> et <stdlib.h> dans le fichier qui contient la fonction main() vu que tu les inclues déjà dans ton "fonction.h".
            • Partager sur Facebook
            • Partager sur Twitter
              1 janvier 2006 à 17:06:18

              Merci
              J'ai suprimmé la variable coups dans challenge et maintenant elle est globel mais ça ne marche toujours pas : au niveau 1 le score est égale à 100 (normale) mais après score c'est égale à -4000000(qqch comme ça).
              • Partager sur Facebook
              • Partager sur Twitter
                1 janvier 2006 à 17:42:14

                Si t'as choisis de la mettre en global (c'est pas très propre mais pou run programme de cette taille ça passe encore), il faut que tu l'initialise à 0 pour commencer (long coups = 0;), et il faut également que tu enlève le static long coups dans l'autre fonction (demandeNombre() je crois).
                • Partager sur Facebook
                • Partager sur Twitter
                  2 janvier 2006 à 9:46:27

                  Merci mais ça fait toujours le mëme problème (1er niveau score=100 mais apres score=-400000)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 janvier 2006 à 11:35:48

                    Il doit y avoir une erreur dans ce que t'as fais, j'ai tester et ça marche parfaitement (j'ai juste tester le niveau 1 :p, et de 100 ça passe à 100 - nb de coups).

                    <lien url="http://iamwhitetiger.free.fr/ftp/nm_the_fr.cpp"></lien>

                    Je n'ai fais que déclarer la variable coups en globale et supprimer les deux autres déclarations...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 janvier 2006 à 13:48:04

                      Merci beaucoup ça marche a merveille(enfin)
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Probleme avec le score

                      × 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