Probleme programmation jeu [Résolu]

Messages postés
32
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
29 mai 2015
-
Bonjour, voila un programme très très simple en console, la compilation ne pose pas de probleme et le debugger ne constate aucune erreur. Lorsque je lance le programme et que je choisi le niveau, il y a une joli fenetre "monprogramme.exe a cessé de fonctionné windows recherche une solution a ce probleme".
Donc voila de l'aide serait extremement appreciée.
Merci d'avance
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

 int main()
 {
   unsigned int choixUtilisateur=0, nombreMystere=0, compteur=0, niveau=0, nombreMaximum=0,MAX = nombreMaximum, MIN = 1;
   printf("Bienvenue au juste prix, veuillez choisir niveau \n  Niveau 1 : Prix jusqu'a 100\n  Niveau 2 : Prix jusqu'a 500\n  Niveau 3 : Prix jusqu'a 1000\n  Niveau 4 : Prix jusqu'a 10000\n  Niveau 5 : Prix jusqu'a 50000\n ");
   scanf("%d",&niveau);

   switch (niveau)
   {
   case 1 :
     nombreMaximum=100;
     break;
   case 2 :
     nombreMaximum=500;
     break;
   case 3 :
     nombreMaximum=1000;
     break;
   case 4 :
     nombreMaximum=10000;
     break;
   case 5 :
     nombreMaximum=50000;
     break;
   default :
     printf("Vous n'avez choisi aucun des niveaux disponibles, veuillez retaper : ");
     scanf("%d",&niveau);
     break;
  }

  srand(time(NULL));
  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
  printf("Vous avez choisi le niveau %d, essayez de trouver un nombre entre 1 et %d \n Mettez votre nombre : ",niveau,nombreMaximum);
  scanf("%d", &choixUtilisateur);

  while (choixUtilisateur != nombreMystere)
  {
    compteur++;
    if (choixUtilisateur > nombreMystere)
    {
      printf("C'est moins! \n Veuillez reessayer : ");
      scanf("%d", &choixUtilisateur);
    }
    else if  (choixUtilisateur < nombreMystere)
  {
     printf("C'est plus \n Veuillez reessayer : ");
     scanf("%d", &choixUtilisateur);
  }
 }
 printf("Bravo, vous avez trouve! Vous avez fait %d erreurs \n",compteur);
 return 0;
}
Afficher la suite 

6 réponses

Meilleure réponse
1
Merci
Ca doit planter parce que tu fais un modulo de 0 a la ligne:
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

MAX - MIN + 1 = 0 --> bug

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 212 internautes nous ont dit merci ce mois-ci

Commenter la réponse de 10n02
Messages postés
32
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
29 mai 2015
0
Merci
Merci beaucoup! Mais j'ai rencontré pleins d'autres problemes, j'ai beau chercher pourquoi, je ne trouve pas! J'ai fait plusieurs essais, mais rien! Grace a toi ca c'est amélioré! Mais je ne peux mettre que le niveau 1, et lorsque je veux rejouer, l'application plante.
Pourrais-je avoir encore quelques informations?
Voila mon nouveau code
Voila mon programme a moi, le debugger ne trouve pas de probleme, mais lorsque je veux mettre 1. rejouer, on m'affiche une fenetre "Le programme a cessé de fonctionner", pourtant je ne trouve pas l'erreur, pourriez-vous m'eclairer? 

/*Ceci est une directive de préprocesseur, elle permet d'ouvrir des fichiers pour nous aider a programmer*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char** argv)
{
int reessayer=1;
do {
int choixUtilisateur=0, nombreMystere=0, compteur=0, niveau=0, nombreMaximum=0, MIN=1;

printf(" --------------------------------\n");
printf("Bienvenue au juste prix, veuillez choisir votre niveau \n Niveau 1 : Prix jusqu'a 100\n Niveau 2 : Prix jusqu'a 500\n Niveau 3 : Prix jusqu'a 1000\n Niveau 4 : Prix jusqu'a 10000\n Niveau 5 : Prix jusqu'a 30000\n ");
printf("--------------------------------\n");

scanf("%d",&niveau);


do
{

switch(niveau)
{
case 1:
nombreMaximum=100;

break;
case 2:
nombreMaximum=500;

break;
case 3:
nombreMaximum=1000;

break;
case 4:
nombreMaximum=10000;

break;
case 5:
nombreMaximum=30000;

break;
}

}
while (niveau >1 && niveau <=5);

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





printf("Vous avez choisi le niveau %d, essayez de trouver un nombre entre 1 et %d \n Mettez votre nombre : ",niveau,nombreMaximum);
scanf("%d", &choixUtilisateur);




while (choixUtilisateur != nombreMystere)
{
compteur++;
if (choixUtilisateur > nombreMystere)
{
printf("C'est moins! \n Veuillez reessayer : ");
scanf("%d", &choixUtilisateur);
}

else if (choixUtilisateur < nombreMystere)
{

printf("C'est plus \n Veuillez reessayer : ");
scanf("%d", &choixUtilisateur);
}

}
printf("Bravo, vous avez trouve! Vous avez fait %d erreurs \n",compteur);
printf("Voulez vous rejouer?\n 1.Oui \n 0.Non \n ");
scanf("%d", reessayer);
}while (reessayer);











return 0;




}









Merci d'avance
Commenter la réponse de chamyl2000
Messages postés
293
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
10 avril 2015
2
0
Merci
Il semble que ton principale problème est que tu ne saches pas utiliser ton debugger correctement :)

Si tu utilises Visual Studio pour ecrire ton programme et que tu executes ton programme en mode debug, normalement, si ton programme plante, il devrait t'indiquer a quelle ligne, et ca devrait t'aider a trouver ou est l'erreur.
Commenter la réponse de cs_Adeon
Messages postés
293
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
10 avril 2015
2
0
Merci
Bon je t'aide une derniere fois apres je te laisse voler de tes propres ailes :)

l'application plante a la ligne
scanf("%d", reessayer);
car ca devrait etre:
scanf("%d", &reessayer);

Et sinon tu as une boucle infinie avec ton
while (niveau >1 && niveau <=5);
si on rentre 1 : ca sorte de la boucle
si on rentre 2 ,3, 4, 5 -> ca fait une boucle infinie

Voila
Commenter la réponse de cs_Adeon
Messages postés
32
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
29 mai 2015
0
Merci
Merci beaucoup de ton aide précieuse! Je suis debutant tu m'excuseras :p
Commenter la réponse de chamyl2000
Messages postés
1
Date d'inscription
dimanche 12 avril 2015
Statut
Membre
Dernière intervention
16 avril 2015
0
Merci
Merci pour toutes ces informations!
Commenter la réponse de Mihhman4