Jeux "Le Juste Prix"

Résolu
Utilisateur anonyme - Modifié par BunoCS le 1/04/2014 à 11:23
 Utilisateur anonyme - 3 avril 2014 à 11:37
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

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 avril 2014 à 09:31
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);
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
1 avril 2014 à 12:32
"j'ai un souci que je n'arrive pas à résoudre"
Quel souci ?
1
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.
1
Utilisateur anonyme
2 avril 2014 à 14:08
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)
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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);

}
1
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
Modifié par Twinuts le 2/04/2014 à 20:09
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 ..."
1
Utilisateur anonyme
2 avril 2014 à 19:09
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 :( ...
1
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 avril 2014 à 20:14
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);
}

1
Je confond souvent les deux languages =)
0
Utilisateur anonyme
3 avril 2014 à 09:36
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 .
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
3 avril 2014 à 11:09
Salut,

oui c'est possible, cela dit merci de bien vouloir ouvrir un autre sujet sur le forum.
0
Utilisateur anonyme
3 avril 2014 à 11:37
Ok
0
Rejoignez-nous