Probleme avec un tit programme que je

Silver-Boy Messages postés 28 Statut Membre -  
Silver-Boy Messages postés 28 Statut Membre -
Salut tout le monde, voila je suis débutant en programmation C, et je coince un peu pour crée un petit jeu lOol (plus ou moins).
Svp vous pouvais me dire ou j'ai gaffé
Probleme : Quand je compile et je lance le programme, ça va tout est nikel, mais quand je choisis le niveau (a savoir 1. 2 ou 3) la difficulté ne change pas (MAX 10. 100 ou 1000)
et aussi meme quand je tape 10 et sachant que la limite est 10 (dans le cas du premier niveau) il me dis C'est plus ?!!! SVP un tit aide ne serai pas de reffus ^^
Merci

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

int main()
{
int nombreMystere, number = 0, compteur = 1, lVl, MIN = 1;

printf("\t\t\t\t===Menu===\n\n");
printf("\t\t\t1- Niveau 1 : de 1 a 100.\n\n");
printf("\t\t\t2- Niveau 2 : de 1 a 1000.\n\n");
printf("\t\t\t3- Niveau 3 : de 1 a 10000.\n\n");
scanf("%d", &lVl);

switch (lVl)
{
case 1:
do
{
int MAX = 10;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);

if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}

else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}

else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;

} while (number != nombreMystere);
break;

case 2:
do
{
int MAX = 100, MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);

if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}

else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}

else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;

} while(number != nombreMystere);
break;

case 3:
do
{
int MAX = 1000, MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);

if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}

else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}

else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;

} while(number != nombreMystere);
break;

default:
printf("veuillez choisir entre 1, 2 et 3.");
break;
}

return 0;

}
A voir également:

3 réponses

poukkid Messages postés 108 Statut Membre 11
 
Salut

Comment sais-tu que la difficulté ne change pas? je ne vois pas de trace spécifique dans l'un ou l'autre des niveaux de difficulté.
Ajoutes des traces pour savoir dans quelle niveau tu atteris
D'autre part, tu réinitialise ton NombreMystère a chaque tour de boucle while dans un niveau de difficulté. Est-ce le comportement recherché? car si tu indiques que "c'est plus" ou "c'est moins", c'est pour qu'on puisse se baser sur cette indication pour finir par trouver, non?

Enfin, tu peux factoriser une grosse partie de ton code puisque le comportement est exactement le meme dans chaque niveau de difficulté. la seule modification est dans l'initialisation du MAX.

Ton case ne devrait donc contenir que l'initialisation du MAX avec la valeur voulue.

D'autre part, comme indiqué au dessus, ton do...while ne devrait contenir que les essais et non pas l'initialisation de la graine avec srand ni celle du nombreMystère...

En gros ton code devrait plutot ressembler à quelquechose comme ca (en pseudo-code)

printf menu...
   ...// les printf...
switch... {
   case 1 : 
      MAX = 10;
      break;
   case 2 : 
      MAX = 100;
      break 
   case 3 : 
      MAX = 1000;
      break;
}

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

do {
   ...//ce qu'il reste
}
while...


Apres s'il y a une erreur ca ne me saute pas aux yeux pour l'instant mais factorise ton code et on y verra peut etre plus clair.

Enfin, (par souci d'optimisation) le switch case que je t'ai indiqué peut se résumer a une puissance de 10, puisque ta variable MAX recoit en fait la valeur 10 puissance lVl... (level 2 par exemple : MAX = 10² = 100)
0
Silver-Boy Messages postés 28 Statut Membre
 
Merci beaucoup, ça m'aide vraiment, je vais m'y mètre, et si j'ai du nouveau je posterai :p.
Thank's ^_^
0
Silver-Boy Messages postés 28 Statut Membre
 
Bon voila j'ai esséyé, et ça a marché, merci beaucoup.

Si tu veux la vérité j'ai eclaté de rire quand j'ai vu les fautes, mais bon je débute, et je crois que j'ai bien droit a ça :p.

Bref voila ce que ça donne :

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

int main()
{
int nombreMystere, number = 0, compteur = 1, lVl, MIN = 1, MAX;

printf("\t\t\t\t===Menu===\n\n");
printf("\t\t\t1- Niveau 1 : de 1 a 100.\n\n");
printf("\t\t\t2- Niveau 2 : de 1 a 1000.\n\n");
printf("\t\t\t3- Niveau 3 : de 1 a 10000.\n\n");
scanf("%d", &lVl);

switch (lVl)
{
case 1:
MAX = 10;
break;

case 2:
MAX = 100;
break;

case 3:
MAX = 1000;
break;

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

if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}

else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}

else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;

} while (number != nombreMystere);

return 0;

}

C'est vraie que j'en avais trop fait au début, et que c'était hyper long pour un simple programme qui ne sert quasiment a rien (trop de répétition :p) mais bon voila j'ai fais ce que j'ai pu.

Merci une énième fois ^^
0