Probleme programmation jeu

Résolu
chamyl2000 Messages postés 32 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 29 mai 2015 - Modifié par cptpingu le 9/04/2015 à 22:01
Mihhman4 Messages postés 1 Date d'inscription dimanche 12 avril 2015 Statut Membre Dernière intervention 16 avril 2015 - 12 avril 2015 à 10:54
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
1
chamyl2000 Messages postés 32 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 29 mai 2015
10 avril 2015 à 12:40
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
0
cs_Adeon Messages postés 293 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 10 avril 2015 2
10 avril 2015 à 13:04
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.
0
cs_Adeon Messages postés 293 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 10 avril 2015 2
Modifié par cs_Adeon le 10/04/2015 à 13:14
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
0

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

Posez votre question
chamyl2000 Messages postés 32 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 29 mai 2015
10 avril 2015 à 13:34
Merci beaucoup de ton aide précieuse! Je suis debutant tu m'excuseras :p
0
Mihhman4 Messages postés 1 Date d'inscription dimanche 12 avril 2015 Statut Membre Dernière intervention 16 avril 2015
12 avril 2015 à 10:54
Merci pour toutes ces informations!
0
Rejoignez-nous