Jeux "Le Juste Prix" [Résolu]

Signaler
Messages postés
32
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
14 août 2015
-
Messages postés
32
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
14 août 2015
-
Bonjour à tous.

Je souhaite programmer un jeu en C (en console) et j'ai un souci que je n'arrive pas à résoudre.
Voici mon Code Source :

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


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

{
        printf(" Menu de selection de la difficulte :\n          1. Facile (de 0 a 100\n          2. Medium (de 0 a 500)\n          3. Dificil (de 0 a 1000)\n          4. Libre");
        printf("\n \n Votre choix ?");
        scanf("%d", choixDifficulte);

        if (choixDifficulte != 1)
         {
             MAX = 100;
         }
        else if (choixDifficulte != 2)
            {
                MAX = 500;

            }
         else if (choixDifficulte != 3)
         {
             MAX = 1000;
         }
         else
         {
             printf("Quelle est votre nombre maximum");
             scanf(" %d ?", MAX);
             printf(" Nombre maximum : %d", MAX);
         }


    // 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("\nQuel est le nombre ? \n ");
        scanf("%d", &nombreEntre);
        compteur = compteur + 1;
        // On compare le nombre entré avec le nombre mystère

        if (nombreMystere > nombreEntre)
            printf("\nC'est plus !\n\n\n\n");
        else if (nombreMystere < nombreEntre)
            printf("\nC'est moins !\n\n\n");
        else
            printf ("\n\n Bravo, vous avez trouve le nombre mystere en %d coup !!!\n\n", compteur);
    } while (nombreEntre != nombreMystere);

}
}


En espérant que vous trouverez la solution à mon problème merci d'avance §
A voir également:

12 réponses

Messages postés
5361
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 mars 2021
108
Salut,

contrairement à printf il faut passer une adresse à scanf...
remplace
scanf("%d", choixDifficulte);
par
scanf("%d", &choixDifficulte);

idem pour:
scanf(" %d ?", MAX); qui est à remplacer par scanf(" %d ?", &MAX);
Messages postés
14785
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 avril 2021
154
"j'ai un souci que je n'arrive pas à résoudre"
Quel souci ?
Messages postés
32
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
14 août 2015
4
Eh bien après le choix du niveau Windows me demande si je veut envoyer un rapport d'erreur et la console se ferme sans que je puisse jouer.
Je peut pas en dire plus pour l'instant je suis en cours et je n' ai pas le logiciel pour re-tester; Je ferais peut être une prise de vue plus tard.
Messages postés
32
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
14 août 2015
4
Merci mon problème est résolu en effet il fallait mettre un & devant la variable ( J' y pensais plus , et sa fait pas longtemps que je re-programme)
Messages postés
32
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
14 août 2015
4
J'aurais besoin d'aide car j'ai piochée la formule de random et elle n'as pas l' aire de fonvtionée en mofifiant le nombre max et, autre problème quand je tape 4 au choix de difficultée l' étape est zapée et le nombre max à l' air de toujours être cent.


Code source actuel :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


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

{
printf(" Menu de selection de la difficulte :\n 1. Facile (de 0 a 100\n 2. Medium (de 0 a 500)\n 3. Dificil (de 0 a 1000)\n 4. Libre");
printf("\n \n Votre choix ?");
scanf("%d", &choixDifficulte);

if (choixDifficulte != 1)
{
MAX = 100;
}
else if (choixDifficulte != 2)
{
MAX = 500;

}
else if (choixDifficulte != 3)
{
MAX = 1000;
}
else if (choixDifficulte != 4)
{
printf("Quelle est votre nombre maximum");
scanf(" %d ?", &MAX);
printf(" Nombre maximum : %d", MAX);
}
}

// 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("\nQuel est le nombre ? \n ");
scanf("%d", &nombreEntre);
compteur = compteur + 1;
// On compare le nombre entré avec le nombre mystère

if (nombreMystere > nombreEntre)
printf("\nC'est plus !\n\n\n\n");
else if (nombreMystere < nombreEntre)
printf("\nC'est moins !\n\n\n");
else
printf ("\n\n Bravo, vous avez trouve le nombre mystere en %d coup !!!\n\n", compteur);
} while (nombreEntre != nombreMystere);

}
Messages postés
5361
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 mars 2021
108
Salut,

Soit tu changes ton if/elseif parce que si choixDifficulte=4 c'est toujours différent de 1... donc MAX=100
Soit tu remplaces par un switch.

switch(choixDifficulte) {
case 1: MAX = 100; break;
case 2: MAX = 500; break;
case 3: MAX = 1000; break;
case 4:
printf("Quelle est votre nombre maximum");
scanf(" %d ?", &MAX);
printf(" Nombre maximum : %d", MAX);
break;
default: printf("Invalid value!\n"); exit(1);
}
--
Dev addict
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
Messages postés
32
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
14 août 2015
4
Salut j' ai appris le DEBUT du C# avec un livre il me semble avoir vu ce que tu dit mais j' avais arrété un moment ducoup je comprend pas bien comment le faire fonctionner :( ...
Messages postés
5361
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 mars 2021
108
Salut,

Je ne comprend pas trop pourquoi faire référence à de C# ici... bref:


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


int main(int argc, char** argv) {
int compteur = 0, choixDifficulte = 0;
int nombreMystere = 0, nombreEntre = 0, max = 0;
const int min = 1;


printf("Menu de selection de la difficulte :\n" \
"\t1. Facile (de 0 a 100\n\t2. Medium (de 0 a 500)\n" \
"\t3. Dificile (de 0 a 1000)\n\t4. Libre\n");
printf("\n\nVotre choix ? ");
scanf("%d", &choixDifficulte);

switch(choixDifficulte) {
case 1: max = 100; break;
case 2: max = 500; break;
case 3: max = 1000; break;
case 4:
printf("Quelle est votre nombre maximum ? ");
scanf("%d", &max);
printf("Nombre maximum : %d", max);
break;
default:
fprintf(stderr, "Choix invalide !\n");
exit(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("\nQuel est le nombre ?\n");
scanf("%d", &nombreEntre);
compteur = compteur + 1;
// On compare le nombre entré avec le nombre mystère

if (nombreMystere > nombreEntre)
printf("C'est plus !\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n");
else
printf ("Bravo, vous avez trouvé le nombre mystère en %d coup !!!\n", compteur);
} while (nombreEntre != nombreMystere);
}

Messages postés
32
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
14 août 2015
4
Je confond souvent les deux languages =)
Messages postés
32
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
14 août 2015
4
Je souhaiterai intégré un timer pour le temp que j'ai mis à deviner le nombre mystère est-ce possibe si oui comment ?

J' ai aussi fait une boucle do/while pour demander un relancement ou un arrêt du programmes .
Messages postés
5361
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 mars 2021
108
Salut,

oui c'est possible, cela dit merci de bien vouloir ouvrir un autre sujet sur le forum.
Messages postés
32
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
14 août 2015
4
Ok