IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Jeu permettant de deviner un nombre


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Jeu permettant de deviner un nombre
    Bonjour,
    j' aurai besoin d' aide pour faire un programme en C sur lequel je bloque complètement Le Programme, c'est :

    Concevoir un jeu, destiné à un enfant de CP-CE1, lui demandant, à chaque partie, de deviner un nombre entier N entre 1 et 50 choisi au hasard par l' ordinateur:
    * Le jeu devra comporter 10 parties.
    * Pour chaque partie, l' enfant disposera de 5 tentatives (au maximum) pour deviner le nombre N.
    Dans une partie donnée, à chaque échec, on lui indiquera par un message adaptée:
    - le nombre de tentatives restantes ;
    - si le nombre qu' il a proposée est supérieur ou inférieur au nombre choisi par l' ordinateur.
    * A la fin de chaque partie, on informera à l'enfant par un message adapté :
    - du fait qu' il a perdu ou gagné la partie courante ;
    - de son score provisoire sur 10 à l' issue de la partie courante.
    * A l' issue des 10 parties, on indiquera à l' enfant par un message adapté que :
    - son score est formidable s' il est de 10/10 ,
    - son score est convenable s' il est situé entre 5 et 9 au sens large ,
    - son score n' est pas fameux s' il est est inférieur à 5 ,
    - que le jeu est terminé .

    Indications :
    * On mettra à votre disposition une fonction alea_int (n) qui fournira un entier aléatoire en 0 et n-1
    * On dispose en C, de la structure de l' instruction if-else if-else décrite ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    if (condition_1)
      {
         instruction_1;
         instruction_2;
         ...
      }
      else if (condition_2)
      {
         instruction_3;
         instruction_4;
         ...
      }
      else
      {
         instruction_5;
         instruction_6;
      }
      instruction_7;
      ...

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    Bonjour,

    Bienvenu sur le forum.

    Ce sujet est un sujet classique, alors pourrais tu préciser les points qui te posent soucis afin que nous te fournissions une aide, et pas une correction?

  3. #3
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    je bloque complètement
    A part l'énoncé de votre problème, je ne vois pas ce que vous donnez: quel est le souci lié au langage c que vous avez ?
    Postez votre code en le simplifiant avant de le poster et nous jetterons un oeil.
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Joe,

    De plus, c'est très clairement un exercice de cours, il faut donc nous expliquer ce qui te bloque, et nous monter ce que tu as déjà fait, comme rappelé par Bayard.
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 16
    Points : 26
    Points
    26
    Par défaut
    Sans vouloir être mauvaise langue je pense qu'il veut une réponse toute faite à son problème, ce qui n'est pas l'objectif du fofo

  6. #6
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 623
    Points : 1 551
    Points
    1 551
    Par défaut
    Un petit pseudo-code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    score=0
    erreur=0
    Pour partie=1 jusqu à 10
     choisir un nombre nbr entre un 1 et 10 // Par l'ordinateur
     essai=1
     tant que essai <= nombre d essai max et que l enfant n a pas trouvé
      afficher le nombre d essais restants
      ntest=demander un nombre
      si ntest<nbr afficher le bon message
      sinon si ntest>nbr afficher le bon message
      sinon si ntest==nbr afficher le bon message, trouvé=vrai
      essai=essai-1
     fin tant que
     si le nombre n a pas été trouvé
      erreur=erreur+1
      afficher le bon message
     sinon 
      score=score+1
      afficher le bon message
     afficher le score (/10)
    fin pour
    afficher le bon message en fonction du score
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 82
    Points : 132
    Points
    132
    Par défaut
    Je vais peut être rabâcher ce que tout le monde te dit mais sans code il n'y aura pas de réponse...

    C'est une problématique assez simple ou tu as de la lecture de données avec analyse et retour de données, c'est juste à faire avec des boucles.

    Du coup je te conseillerai de commencer par un tuto, car à mon avis tu n'es pas au top en C. Une fois les chapitres boucle et lecture de données lus (Tu peux lire les autres chapitres aussi ça ne fait pas de mal), tu reviens avec un code fonctionnel (je l'espère) et si il ne l'est pas la on t'aidera.

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Note:
    • En deux essais, on peut trouver un nombre de 1 à 3 (2**2-1) par recherche dichotomique (la méthode la plus évidente pour résoudre ce jeu).
    • En trois essais, on peut trouver un nombre de 1 à 7 (2**3-1) par recherche dichotomique.
    • En quatre essais, on peut trouver un nombre de 1 à 15 (2**4-1) par recherche dichotomique.
    • En cinq essais, on peut trouver un nombre de 1 à 31 (2**5-1) par recherche dichotomique.

    Il n'y a aucune garantie de pouvoir trouver un nombre de 1 à 50 en cinq essais seulement. De telles règles pénalisent le joueur sans qu'il ait commis de faute. Il faut au autoriser au moins six essais, sinon le jeu devient un "test de chance" ---> poubelle, autant jouer directement aux dés.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Je pense l' avoir presque réussi ! Mais...
    J' ai développé ça mais ça bloque quand même pourtant je pense pas m' être trompez !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    #include <stdio.h>
    #include <math.h>
    #include "stdlib.h"
     
    float alea_float()
     
        int alea_int(int N) { return (int) (N*alea_float()); }
        int main()
        {
        int partie_qui_reste,note,choix,alea,x,y;
        note=0;
        for(y=1; y<=10; y++)
        {
        partie_qui_reste=4;
        alea=alea_int(50)+1;
        for(x=1; x<=5; x++)
        {
        printf("Trouve le Nombre Mystere compris entre 1 et 50: ");
        scanf("%d",&choix);
        if(choix==alea)
        {
        printf("Bravo !!\n");
        x=6;
        note=note+1;
        }
        else if(choix>alea)
        {
        printf("Le Nombre Mystere est plus petit !\n");
        printf("Il te reste %d tentative\n",partie_qui_reste);
        partie_qui_reste=partie_qui_reste-1;
        }
        else if(choix<alea)
        {
        printf("Le Nombre Mystere est plus grand !\n");
        printf("Il te reste %d tentative\n",partie_qui_reste);
        partie_qui_reste=partie_qui_reste-1;
        }
        if(x==5 && choix!=alea)
        {
        printf("Perdu ! Le Nombre Mystere etait %d ! ='[",alea);
        }
        }
        printf(" _ Ta Note pour l' instant est de %d / %d\n",note,y);
        }
        if(note==10)
        {
        printf("Formidable! O_O Einstein, Sors de ce corps!");
        }
        if(note>=5 && note<=9)
        {
        printf("Beau/Belle Gosse! ^^ C'est Convenable!");
        }
        if(note<5)
        {
        printf("C' est pas Fameux! -_-' J' espere que tu cuisines pas comme tu joues!");
        }
        printf(" Jeu Termine! A plus! Petit Joueur ;-]");
     
        return 0;
    }
    Vous pourriez m' aider ?

  10. #10
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 82
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par BlackFireWhite Voir le message
    J' ai développé ça mais ça bloque quand même pourtant je pense pas m' être trompez !
    Dis nous ce qui bloque (les messages d'erreurs) et pas ça bloque!!!

    Et regarde du coté de l'indentation...

  11. #11
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    Que fait la fonction aléa float?

  12. #12
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    #include <stdio.h>
    #include <math.h>
    #include <time.h>
    #include "stdlib.h"
     
     
     
    int partie ( ){
        int choix, note;
        int alea=rand() % 50+1;
        int x;
        note=0;
        for( x=1; x<=5; x++){
            printf("Trouve le Nombre Mystere compris entre 1 et 50: ");
            scanf("%d",&choix);
            if(choix==alea){
                printf("Bravo !!\n");
                x=6;
                note=note+1;
            }else if(choix>alea){
                printf("Le Nombre Mystere est plus petit !\n");
                printf("Il te reste %d tentative\n",5-x);
            }else if(choix<alea){
                printf("Le Nombre Mystere est plus grand !\n");
                printf("Il te reste %d tentative\n",5-x);
            }
            if(x==5 && choix!=alea){
                printf("Perdu ! Le Nombre Mystere etait %d ! ='[",alea);
            }
        }
        return note;
    }
     
     
    int main()
    {
        int note,y;
        srand ( time(NULL) );
        note=0;
        for(y=1; y<=10; y++){
     
            note+=partie();
            printf(" _ Ta Note pour l' instant est de %d / %d\n",note,y);
        }
        switch(note){
            case 10 :
                 printf("Formidable! O_O Einstein, Sors de ce corps!");
                 break;
            case 9:
            case 8:
            case 7:
            case 6:
            case 5 :
                 printf("Beau/Belle Gosse! ^^ C'est Convenable!");
                 break;
            default:
                 printf("C' est pas Fameux! -_-' J' espere que tu cuisines pas comme tu joues!");
     
        }
        printf(" Jeu Termine! A plus! Petit Joueur ;-]");
     
        return 0;
    }
    J'ai refactoré un peu le code pour ma compréhension mais tout cela n'est pas du tout optimisé: a toi de retravailler tout ca .
    Pas de grande erreur, j'ai juste remplacé alea float par random de time.h.

    Attention ceci n'est pas une correction: l'algo que tu as produit est juste, mais peut efficace

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Merci à tous, j'ai retravailler mon programme
    Et j'ai réussi ! Le problème était bien au niveau des fichiers de base inclus et des fonctions, je n'avais pas inséré la fonction Time, mais je l'ai fait et j'ai enfin réussi ! Si ça vous intéresse je peux vous montrer ce que j'ai fait ? Et puis désolé pour le peu d' indications que j' ai donné au début , mais vous m'avez aider quand même merci !

Discussions similaires

  1. Réponses: 9
    Dernier message: 08/01/2012, 17h57
  2. [CASIO FX-180P] Jeu de devinette d'un nombre aléatoire
    Par the_clansman dans le forum Autres langages
    Réponses: 0
    Dernier message: 30/10/2009, 16h06
  3. script permettant d'afficher le nombre de caractères lus
    Par mptijr dans le forum Administration système
    Réponses: 2
    Dernier message: 19/03/2009, 02h50
  4. Réponses: 4
    Dernier message: 06/06/2008, 11h20
  5. [Conception] Question sur un code permettant de connaître le nombre de connectés
    Par inferno66667 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 19/12/2005, 19h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo