Probleme programmation jeu [Résolu]

Signaler
Messages postés
32
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
29 mai 2015
-
Messages postés
1
Date d'inscription
dimanche 12 avril 2015
Statut
Membre
Dernière intervention
16 avril 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;
}

6 réponses

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
Messages postés
32
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
29 mai 2015

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
Messages postés
293
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
10 avril 2015
2
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.
Messages postés
293
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
10 avril 2015
2
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
Messages postés
32
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
29 mai 2015

Merci beaucoup de ton aide précieuse! Je suis debutant tu m'excuseras :p
Messages postés
1
Date d'inscription
dimanche 12 avril 2015
Statut
Membre
Dernière intervention
16 avril 2015

Merci pour toutes ces informations!