Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/11/2014, à 22:39

dragonito

programmation, faire un jeu avec le nombre mystère

voili , je suis nouveau dans la communauté et me suis dis que puis je faire pour m’améliore en informatique...donc j'ai fait des recherche sur la programmation etc et j'ai trouver des exos ... mais sur un je sèche terriblement ... je sais que ça n'a peu rien a voir a vos yeux avec unbutu mais moi ça m'aide a mieu comprendre ...
j'ai réussi le début de mon exo qui était " faire un jeux avec le nombre mystère" mais quant je veut comptabiliser les coups de ma parti ( que le joueur en face 5 ou 10 j'ai toujours le même nombre de coup et a la fin par contre ça me donne un chiffre monstrueux ...
Je vous laisse regarder ce que j'ai fait, et si vous pourriez m'explquer ce qui ne vas pas ce serais kool de votre par si il vous plais

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


int main ( int argc, char** argv )
{
    int nombreMystere = 0, nombreEntre = 0, compteur = 0, resultat = 0;
    const int MAX = 100, MIN = 1;

    // Génération du nombre aléatoire

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

    /* La boucle du programme. Elle se répète tant que l'utilisateur n'a pas trouvé le nombre mystère */

    do
    {
        // On demande le nombre
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);
        compteur ++;
        // On compare le nombre entré avec le nombre mystère

        if (nombreMystere > nombreEntre)
            printf("C'est plus ! %d compteur \n\n");
        else if(nombreMystere < nombreEntre)
            printf("C'est moins  vauts ! %d compeur \n\n");
        else
            printf ("Bravo, vous avez trouve le nombre mystere +%d compeur !!!\n\n");

    } while (nombreEntre !=nombreMystere);
          printf("Voulez vous recommencer ?? %d compteur");

      printf("voulez vous recommencer ? ");
      printf ("Voulez vous recommencer ? \n\n");

       return 0;
}


[edit modo] : titre plus clair et ajout de balises « code ».

Dernière modification par Sir Na Kraïou (Le 19/11/2014, à 17:21)

Hors ligne

#2 Le 18/11/2014, à 23:51

dragonito

Re : programmation, faire un jeu avec le nombre mystère

roll si vous avez juste des indication a me ddonné svp svpsvp  "yeux de chat potté "

Hors ligne

#3 Le 19/11/2014, à 01:55

louis94

Re : programmation, faire un jeu avec le nombre mystère

Salut !

Le problème est dans tes printf(). Tu écris

printf("Voulez vous recommencer ?? %d compteur");

et tu obtiens

Voulez vous recommencer ?? [Un nombre aléatoire] compteur

Je ne te donne pas tout de suite la solution...
Comment, alors que tu ne lui donnes pas son nom (ce qui est entre guillemets ne compte pas), le compilateur peut-il savoir quelle variable tu souhaites afficher ?
Regarde aussi les exemples de cette page.

Louis

Hors ligne

#4 Le 19/11/2014, à 11:42

dragonito

Re : programmation, faire un jeu avec le nombre mystère

big_smile merci je vais essayer de ce pas de résoudre ce problème.

Hors ligne

#5 Le 19/11/2014, à 17:21

dragonito

Re : programmation, faire un jeu avec le nombre mystère

j'ai essayer plusieurs solutions , mais rien ne fonctionne
soit ça m’écrit " 1+1= nombre de coup" résultat 58 coup ... soit ça m'écrit 1+16 = nombre de coups résultat 1685555555 coup ..
je fait avec  en C pas en C++,
comme je suis un noob je vais commencer molo.
Je voulais rentrés un menu de difficulté mais me suis dis qu'il valais mieux que j'arrive a gère mon problème de compteur.
Mais cependant j'ai réussi a faire un retour sur la partie, petite victoire qui encourage ^^

Donc voiçi ou j'en suis ^^

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


int main ( int argc, char** argv)

{
     printf("                ___Devine le plus vite que tu peus___\n\n\n");

    int nombreMystere = 0, nombreEntre = 0, compteur = 0, resultat = 0, nouvellePartie = 0, coup = 0;
    const int MAX = 100, MIN = 1;


    /* On donne pour valeur a la variable resultat, la valeur renvoyée par la fonction */
    // Génération du nombre aléatoire

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

    /* La boucle du programme. Elle se répète tant que l'utilisateur n'a pas trouvé le nombre mystère */
    if (nouvellePartie == 1); {

       do
          {
     /*revien en fonction du choix en fin de boucle*/

    int nombreMystere = 0, nombreEntre = 0, compteur = 0, resultat = 0, coup = 0;
    const int MAX = 100, MIN = 1;

    // Génération du nombre aléatoire

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;


    do
    {
        // On demande le nombre
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);
        compteur ++;
        // On compare le nombre entré avec le nombre mystère

        if (nombreMystere > nombreEntre)
            printf("C'est plus ! (%d + %d = nombre)coup\n\n");


        else if (nombreMystere < nombreEntre)
                 printf("C'est moins  vauts ! (%d + %d = nombre)coup\n\n");


        else
            printf ("Bravo, c'est géant tu en le nouveau gagnant!!! ( resultat = fonction(nombre1, nombre2) coup\n\n");


    } while (nombreEntre !=nombreMystere);

           printf("Voulez vous recommencer ?? ");
           printf("1.Continuer / 2.Arreter :");
           scanf ("%d", &nouvellePartie);
           printf("\n\n");

    }while (nouvellePartie == 1);

       return 0;
       }
}

en fait je crois que je n’arrive pas a rentré dans la boucle pour qu'il comptabilise ne nombre de réponse donné... il m'en veut =/

Hors ligne

#6 Le 19/11/2014, à 17:30

louis94

Re : programmation, faire un jeu avec le nombre mystère

La partie de la documentation C++ que je t'ai donnée correspond à exactement la même fonction printf() qu'en C. Quelques exemples de printf() bien formés :

int annee = 2014;
const char *hello = "Hello, world !";
double pi = 3.14;
printf("%s\n", hello);
printf("Nous sommes en %d\n", annee);
printf("Le nombre pi vaut %f\n", pi);

Louis

Hors ligne

#7 Le 19/11/2014, à 20:59

dragonito

Re : programmation, faire un jeu avec le nombre mystère

j'ai essayer  "%i"  c'est pas bon .... quant je fait  "%d" le résultat il change le nombre mystère .... quant j'essai de rentré une autre ligne
aprés ça
if (nombreMystere > nombreEntre)
            printf("C'est plus ! (%d + %d = nombre)coup\n\n");

ou ça
else if (nombreMystere < nombreEntre)
                 printf("C'est moins  vauts ! (%d + %d = nombre)coup\n\n");
il me dis que eslse if n'est pas bon car il faut un autre if
si je fait ça
printf("%d + %d = %d",nombre1, nombre2, resultat);
ça ne calcule que une fois
et donc int i =0 c'est pas bon

Hors ligne

#8 Le 19/11/2014, à 22:36

dragonito

Re : programmation, faire un jeu avec le nombre mystère

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int compteur = 1 ;
    print (compteur,compteur<5);
{if

(compteur+= 1);
printf (compteur<5);
printf ("Fin de la boucle");




} while if (compteur<5)
return 0;

}
j'ai essayer de rentré ça ... mais ça ne rentre pas non plus

Hors ligne

#9 Le 20/11/2014, à 01:58

louis94

Re : programmation, faire un jeu avec le nombre mystère

Je n'ai pas trop compris tes deux derniers messages. Je peux t'expliquer pourquoi tes programmes ne compilaient pas, mais je doute que ça t'aide vraiment. Quel était ton raisonnement en écrivant ces lignes ?

[La prochaine fois que tu postes du code, pense à ajouter la balise [code ] (sans l'espace) avant et la balise [/code ] après (également sans l'espace). C'est plus facile à lire.]

Voici un programme qui compte jusqu'à 5 :

#include <stdio.h>
int main(int argc, char** argv) {
    int compteur = 1;
    do {
        printf("Le compteur vaut %d.\n", compteur);
    } while(compteur < 5);
    return 0;
}
/*
 * Descends vers le bas pour voir la solution à ta première question.
 * Il n'y a pas encore moyen de recommencer la partie, et j'ai enlevé
 * les morceaux de code que tu avais écrit à ce propos.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main ( int argc, char** argv )
{
    int nombreMystere = 0, nombreEntre = 0, compteur = 0, resultat = 0;
    const int MAX = 100, MIN = 1;

    // Génération du nombre aléatoire

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

    /* La boucle du programme. Elle se répète tant que l'utilisateur n'a pas trouvé le nombre mystère */

    do
    {
        // On demande le nombre
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);
        compteur ++;
        // On compare le nombre entré avec le nombre mystère

        if (nombreMystere > nombreEntre)
            printf("C'est plus ! %d essais.\n\n", compteur);
        else if(nombreMystere < nombreEntre)
            printf("C'est moins ! %d essais.\n\n", compteur);
        else
            printf ("Bravo, vous avez trouve le nombre mystere en %d essai(s) !!!\n\n", compteur);

    } while (nombreEntre !=nombreMystere);

    return 0;
}

Hors ligne

#10 Le 20/11/2014, à 11:34

dragonito

Re : programmation, faire un jeu avec le nombre mystère

Ttout d'abord merci de ton aide
en faisant ce compteur je voulais qu'il addition automatiquement le nombre de coup et qu'ils soient visible a l''écran
1
2
3
4
bien sur je cherche comment écrire infini pour ne pas a avoir a écrire compteur<5
Je vais ressayer un peu aujourd'hui , mais je pense que si j'y arrive pas je passerais a une autre difficulté mettre un menu de niveau  car deux jours de réflexion pour un compteur ça me file le bourdon;)

Hors ligne

#11 Le 20/11/2014, à 12:02

dragonito

Re : programmation, faire un jeu avec le nombre mystère

hoooo j'ai trouvé en 3 jours ^^
j'avais mal mis ma ligne

    {
       
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);
        compteur ++;
        printf("Le compteur vaut %d.\n", compteur);

          sauf que à la fin il me met toujours pas le bon chiffre ><"*
je vais cherché

Hors ligne

#12 Le 20/11/2014, à 12:05

Clémentv

Re : programmation, faire un jeu avec le nombre mystère

Tes intentions (et donc tes problèmes) ne sont pas très clairs, mais j'ai l'impression que tu en attends trop de printf. Cette fonction ne sert qu'à afficher du texte formatté, c'est à dire la chaine que tu lui passe en premier paramètre dans laquelle on remplace les les bouts avec % par les valeurs des paramètres suivant. Elle ne fera pas de magie à ta place. Lire la page de manuel (tape man 3 printf dans un terminal) devrait t'aider à bien maitriser cette fonction.

Donc si tu veux faire une addition il faut que tu ajoutes une instruction d'addition et non seulement l'affichage d'une addition :

int resultat = nombre1 + nombre2;
printf ("%d + %d = %d\n", nombre1, nombre2, resultat);

ou pour faire plus court on peut passer le résultat de l'addition directement à printf mais il ne faut pas oublier que ça reste 2 instructions.

printf ("%d + %d = %d\n", nombre1, nombre2, nombre1 + nombre2);

Autre conseil : utilise l'option -Wall de gcc et prend bien en compte les avertissements et pas seulement les erreurs. Entre autre, gcc sera capable de t'indiquer des mauvaises utilisations de printf.

Hors ligne

#13 Le 20/11/2014, à 12:15

dragonito

Re : programmation, faire un jeu avec le nombre mystère

oui , je sais mais j'ai commencer a apprendre il y a 3 jours , donc je ne connais pas encore tout ^^"
Mais cette ligne là
                                printf ("Le compteur vaut %d.\n", compteur);
M"affiche bien le nombre de coup au compteur a chaque fois que le joueur rentre un nombre  différent du  chiffre mystère
j'ai bien afficher : compteur 1 puis 2 puis 3......

Pourquoi j'ai fait ça et je me suis attarder dessus ?
Car maintenant je veux continuer ce jeux avec différents paliers afin de bien connaitre "comment programmer en c"
   _la base du jeux en lui même me donnera 2 paliers avec chiffres aléatoires de 1 à 100 ; puis de 1 à 500
   _le compteur me donneras lui 2 second paliers supplémentaires  ( si j'y arrive bien sur ^^)
                        - pour les 2 premiers paliers sur la bases le compteur sera illimité
                        - pour les  2 autres je choisirais un nombres de coups / chances pour trouver le nombres mystère (le jeux s'arrêtera si par exemple en 7                coups la personne n'as pas trouver (dans la tranche de 1à 100) le nombre à deviner)

Voilà vous savez tout ( je fait ça en solo sans être en cours  ni pour le taff, donc j'y connais rien à la base )

Dernière modification par dragonito (Le 20/11/2014, à 15:32)

Hors ligne

#14 Le 20/11/2014, à 19:08

dragonito

Re : programmation, faire un jeu avec le nombre mystère

Voici mon projet, jusqu'ici j'ai encor 3 erreurs que je n'arrive pas a résoudre
- la première:  il me demande toujours deux fois mon choix si je demande directement le choix 2
- la seconde: en fin de jeux 2 je n'arrive pas a retourner sur le menu pour jouer sur le jeux 1

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


int Niveau()

{ int Niveau = 0;
         while (Niveau < 1 || Niveau > 2)
    {   printf("Bienvenue dans mon premier petit jeux de découverte!!!\n\n");
        printf("Niveau :\n");
        printf("1 : Niveau découverte n");
        printf("2 : Niveau Perceverant\n\n");
        scanf("%d", &Niveau);
    }

return Niveau;
}

int main(void)
{
    switch (Niveau())
    {
        case 1:
            printf("Bienvenue au niveau découverte\n");



         int nombreEntre = 0;
         printf("Bienvenue au nouveau jeux\n\n");
         printf("vous les vous faire une nouvelle partie ?\n\n ");
         printf("1 yes - 2 no \n\n");
         scanf("%d", &nombreEntre);
        if (nombreEntre == 1);
         {
         int nombreMystere = 0, nombreEntre = 0, compteur = 0, nouvellePartie = 0;
         const int MAX = 100, MIN = 1;
          srand(time(NULL));
          nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
         if (nouvellePartie == 1); {

           do
          {

           int nombreMystere = 0, nombreEntre = 0, compteur = 0;
           const int MAX = 100, MIN = 1;

            srand(time(NULL));
            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
            do

            {
            printf("Quel est le nombre ? ");
            scanf("%d", &nombreEntre);
            compteur ++;

            printf("Le compteur vaut %d.\n", compteur);


         if(nombreMystere > nombreEntre)
            printf(" c'est plus !\n\n");
       else if (nombreMystere < nombreEntre)
            printf("c'est moins !!! \n\n");
        else printf("Bravo c'est géant tu en le nouveau gagnant\n\n");

    } while (nombreEntre != nombreMystere );
           printf("Voulez vous recommencer ?? ");
           printf("1.Continuer / 2.Arreter :");
           scanf ("%d", &nouvellePartie);
           printf("\n\n");
       }while (nouvellePartie == 1);
    break;
    }
}
}
   switch (Niveau())
    {
        case 2:
            printf("Bienvenue au niveau Perceverant !!! attention içi c'est de 1 à 500\n");

         int nombreMystere = 0, nombreEntre = 0, compteur = 0, nouvellePartie = 0;
         const int MAX = 500, MIN = 1;
          srand(time(NULL));
          nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
         if (nouvellePartie == 1); {

           do
          {

           int nombreMystere = 0, nombreEntre = 0, compteur = 0;
           const int MAX = 500, MIN = 1;

            srand(time(NULL));
            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
            do

{
            printf("Quel est le nombre ? ");
            scanf("%d", &nombreEntre);
            compteur ++;

            printf("Le compteur vaut %d.\n", compteur);

         if(nombreMystere > nombreEntre)
            printf(" c'est plus !\n\n");
          else if (nombreMystere < nombreEntre)
            printf("c'est moins !!! \n\n");
          else printf("Bravo c'est géant tu en le nouveau gagnant\n\n");

           } while (nombreEntre != nombreMystere );
           printf("Voulez vous recommencer ?? ");
           printf("1.Continuer / 2.Arreter :");
           scanf ("%d", &nouvellePartie);
           printf("\n\n");

          }while (nouvellePartie == 1);
    break;





       return 0 ;
}
}

}

Hors ligne

#15 Le 20/11/2014, à 19:31

Clémentv

Re : programmation, faire un jeu avec le nombre mystère

Il y a trop d'accolades placées n'importe où, c'est dur de s'y retrouver et de savoir quelles accolades correspondent (les trois accolades fermantes après le "return 0" me font peur). Essaye de mieux présenter, Tu trouveras peut être des erreurs au passage. Choisis un  style d'indentation que tu aimes bien et tiens toi-s-y.

Edit: En passant vite-fait une indentation automatique, c'est un peu plus lisible et on s'y retrouve.

dragonito a écrit :

- la première:  il me demande toujours deux fois mon choix si je demande directement le choix 2

Tu as deux switch dans ton code, un pour chaque "case". Donc le premier ne fait quelque chose seulement si tu fais le choix 1, sinon il passe directement au second et affiche à nouveau le menu en gérant seulement le choix 2.

dragonito a écrit :

- la seconde: en fin de jeux 2 je n'arrive pas a retourner sur le menu pour jouer sur le jeux 1

Tu n'as pas de boucle autour de ton (ou plutôt "tes") switch, le menu sera donc toujours affiché exactement deux fois.

gcc -Wall a écrit :

attention : contrôle a atteint la fin non void de la fonction [-Wreturn-type]

Le "return 0" est mal placé. Après le break, il ne sera jamais atteint, alors qu'il manque à la fin de la fonction main (qui, elle, est atteignable).

Aussi, tes deux cas font exactement la même chose, tu devrais utiliser ton switch pour initialiser les valeurs de MIN et MAX seulement, puis avoir le même code de jeu pour les deux modes.

J'ai pas regardé plus en détail, il y a peut être d'autres problèmes.

Dernière modification par Clémentv (Le 20/11/2014, à 21:07)

Hors ligne

#16 Le 21/11/2014, à 12:16

dragonito

Re : programmation, faire un jeu avec le nombre mystère

Ok , merci je vais essayer de faire mieu ^^

Hors ligne

#17 Le 21/11/2014, à 16:51

dragonito

Re : programmation, faire un jeu avec le nombre mystère

Voilà j'ai réussi a rectifié je n'ai plus que "un switch" .Le problème du menu es donc réctifier je passe bien  en 1 si j'appuis sur 1 et en deux si c'est la 2.
Maintenant j'ai réussi a passé avec continuer  du niveau à passé au second niveau, sur le choix de mon menu en fin si c'est 2 ça s'arrete mais si c'est 3 je lui demande de revenir au choix du menu principale il ne veus pas ><"

Dernière modification par dragonito (Le 21/11/2014, à 16:52)

Hors ligne

#18 Le 21/11/2014, à 17:53

dragonito

Re : programmation, faire un jeu avec le nombre mystère

connaissez vous un bon site qui pourrais m'apprendre a programmer ?  et a fr des exos svp ?

Hors ligne

#19 Le 21/11/2014, à 17:56

Clémentv

Re : programmation, faire un jeu avec le nombre mystère

S'il ne veut pas, c'est sûrement que tu n'as pas été assez poli. wink

Hors ligne

#20 Le 21/11/2014, à 18:06

dragonito

Re : programmation, faire un jeu avec le nombre mystère

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

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


{
    int Niveau;

    while (Niveau < 1 || Niveau > 2)
    {
        printf("Bienvenue dans mon premier petit jeux de découverte!!!\n\n");
        printf("Niveau :\n");
        printf("1 : Niveau découverte \n");
        printf("2 : Niveau Perceverant\n\n");
        scanf("%d", &Niveau);
}

printf("\n");
switch (Niveau)
    {case 1:
             printf ("Bienvenue au niveau decouverte\n");

            int nombreMystere = 0, nombreEntre = 0, compteur = 0, nouvellePartie = 0, Arreter = 0;
                const int MAX = 100, MIN = 1;
                srand(time(NULL));
                nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

                if (nouvellePartie == 1);
                    {

                        do
                        {

                            int nombreMystere = 0, nombreEntre = 0, compteur = 0, Arreter = 0;
                            const int MAX = 100, MIN = 1;

                            srand(time(NULL));
                            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                       do
                        {
                            printf("Quel est le nombre ? ");
                            scanf("%d", &nombreEntre);
                            compteur ++;

                            printf("Le compteur vaut %d.\n", compteur);

                            if(nombreMystere > nombreEntre)
                                printf(" c'est plus !\n\n");
                            else if (nombreMystere < nombreEntre)
                                printf("c'est moins !!! \n\n");
                            else printf("Bravo c'est géant tu en le nouveau gagnant\n\n");

                        }
                        while (nombreEntre != nombreMystere );

                        printf("Voulez vous recommencer ?? ");
                        printf("1.Continuer / 2.Arreter / 3. Niveau\n\n\n :");
                        scanf ("%d", &nouvellePartie);
                        printf("\n\n\n");
                            break;
                    }
                    while (nouvellePartie == 1);
                }
                while (Arreter == 2);

  case 2:
                    printf("Bienvenue au niveau Perceverant !!! attention içi c'est de 1 à 500\n");

do{                 int nombreMystere = 0, nombreEntre = 0, compteur = 0, nouvellePartie = 0, Arreter = 0;
                    const int MAX = 500, MIN = 1;
                    srand(time(NULL));
                    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                    if (nouvellePartie == 1);
                    {

                        do
                        {

                            int nombreMystere = 0, nombreEntre = 0, compteur = 0, Arreter = 0;
                            const int MAX = 500, MIN = 1;

                            srand(time(NULL));
                            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                            do

                            {
                                printf("Quel est le nombre ? ");
                                scanf("%d", &nombreEntre);
                                compteur ++;

                                printf("Le compteur vaut %d.\n", compteur);

                                if(nombreMystere > nombreEntre)
                                    printf(" c'est plus !\n");
                                else if (nombreMystere < nombreEntre)
                                    printf("c'est moins !!! \n");
                                else printf("Bravo c'est géant tu en le nouveau gagnant\n\n");

                            }
                            while (nombreEntre != nombreMystere );
                            printf("Voulez vous recommencer ?? ");
                            printf("1.Continuer / 2.Arreter / 3. Niveau\n\n\n:");
                            scanf ("%d", &nouvellePartie);
                            printf("\n\n\n");
                            break;

                        }
                        while (Niveau == 3);
                    }
                    while(nouvellePartie == 1);

                 }
                    while (Arreter == 2);
}

}

Hors ligne

#21 Le 21/11/2014, à 23:32

dragonito

Re : programmation, faire un jeu avec le nombre mystère

j'ai tout recommencer mais  je n'y arrive toujours pas .... je commence a me demander si mon code ::c es bien installer sur mon pc hmm

Hors ligne

#22 Le 22/11/2014, à 00:05

louis94

Re : programmation, faire un jeu avec le nombre mystère

La logique du programme que tu as collé au message #20 est bonne.
Il reste des point-virgules mal placés :

if (condition); // <- Pas de point-virgule ici
{
    // ...
}

Des if qui devraient être des do :

if (condition) // <- Il te faut un do ici
{
    // ...
}
while (condition);

Tu as aussi deux blocs inutiles (pire, ils cassent le programme) du type :

int nombreMystere = 0, nombreEntre = 0, compteur = 0, Arreter = 0;
const int MAX = 100, MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

Je pense que tu as une idée qui fonctionnera (beaucoup de débutants on du mal avec l'idée, donc c'est positif wink), mais il me semble que tu as du mal à la «traduire» en C. Je te suggère de d'abord écrire l'idée sur papier, sans trop t'occuper de la syntaxe. Par exemple, pour le choix de niveau :

faire {
    demander le niveau
} tant que (niveau invalide)

Ensuite, écris-le en C. Si tu rencontres des problèmes, vérifie tes point-virgules etc. Si ça ne fonctionne toujours pas, relis ton code C en te demandant s'il correspond bien à ce que tu as sur ta feuille. Enfin, si tu n'as toujours pas trouvé le bogue, essaye de faire à la main l'exécution de ton programme : quelle variable vaut quoi à quel moment, etc.

Louis

Hors ligne

#23 Le 22/11/2014, à 11:38

Clémentv

Re : programmation, faire un jeu avec le nombre mystère

Pour les point-virgules en trop, je pensais que -Wall prévenait mais en fait il faut -Wextra. Exemple :

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

int main () {
	if (2 > 3);
	{
		printf ("Bonjour, tout le monde !\n");
	}
	return 0;
}
$ gcc -Wall -Wextra hello.c
hello.c: In function ‘main’:
hello.c:5:12: attention : suggest braces around empty body in an ‘if’ statement [-Wempty-body]
  if (2 > 3);
            ^

Les avertissements ne sont pas toujours très clair, ici le compilateur se demande si tu voulais vraiment faire un if avec un corps vide mais ne dit rien pour le point-virgule en trop. C'est à toi de réfléchir si c'est vraiment ce que tu voulais faire. Le compilateur n'a pas de conscience ou de volonté propre, il veut toujours bien faire ce qu'on lui demande (tant que c'est possible) et n'invente pas de programme que tu n'as pas écrit.

Tu as deux grandes sections de codes quasi-identique, ça duplique le travail de vérification d'erreur et en plus tu peux oublier de corriger dans l'autre section une erreur déjà corrigé dans la première. Ici, je te conseille d'utiliser une fonction. Donc voici un exercice pour toi :
Écris une fonction "int jouer (int min, int max)" permettant de jouer une partie de nombre mystère pris entre min et max et retourne le choix du joueur pour la suite. Puis utilise la dans ton programme. Ça devrait bien simplifier ta fonction main, qui sera plus facile à corriger.

Je remarque aussi que tu as une boucle "while (Arreter == 2)", mais je ne vois pas d'autres utilisations de la variable Arreter. Pareil pour "while (Niveau == 3)", Niveau n'est pas affecté à l'intérieur de la boucle.

Hors ligne

#24 Le 22/11/2014, à 11:49

dragonito

Re : programmation, faire un jeu avec le nombre mystère

Bonjour , en effet hier quant j'ai remonté le jeux , j'ai pris le temps de bien tout remettre correctement. Pourquoi j'avais ce boque ? qui apparaissait deux fois dans ma séquence ?
  Ben c'etais la seul solution que j'a i trouve pour recommencer mon jeux avec la commande " (nouvellePartie ==1) .
J'ai essayer  avec (compteur<10) d'arreté la partie, alors j'y suis arriver en l’intégrant juste après la déclaration du nombre mystére(si il es plus petit ou si il es plus grand ... compteur +1 +2....) Vous avez perdu ... mais aprés mon choix de fin de Partie n'est pas valide.
Oui louis , hier pour la feuille de papier c'est ce que j'ai fait sous "libre office  ainsi j'ai pu minimiser les fenêtre et comparait ce que je voulais et ce qui étais ecrit .
Merci de vos conseils

Hors ligne

#25 Le 22/11/2014, à 12:04

Compte supprimé

Re : programmation, faire un jeu avec le nombre mystère

dragonito a écrit :

connaissez vous un bon site qui pourrais m'apprendre a programmer ?  et a fr des exos svp ?

Tu as http://openclassrooms.com/, ex-Site du Zéro, qui est assez connu et qui fait des cours faciles à comprendre. J'ai vu des gens dire que les cours étaient parfois mal foutus, donnaient des mauvaises habitudes, etc. : perso je vais autre part en général, mais ça peut permettre de débuter facilement. J'ai quand même appris à utiliser Linux sur ce site, y'a quelques années, et je trouve que ça m'a pas mal aidé.