[C] Probleme script

Résolu/Fermé
arthurbest78 Messages postés 66 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 26 juin 2014 - Modifié par arthurbest78 le 17/04/2010 à 12:24
arthurbest78 Messages postés 66 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 26 juin 2014 - 17 avril 2010 à 13:11
Salut j'ai créer un script assez compliquer, enfin , pour moi et je voudrez l'améliorer encore plus, mais je ne sais pas comment m'y prendre.

Mes amélioration voulues:

°Lorsque l'on a trouver le chiffre mystère le programme nous dit en combien d'essai.

°Demander à la fin du programme si il veut recommencer une partie



Voici mon script:
______________________________________________________________

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

int main ()

{
int choixMode;

printf("A quel mode voulez-vous jouer ?\n\n");
printf("1. Mode 1 Joueur\n");
printf("2. Mode 2 Joueurs\n");
printf("\n\n");
scanf("%d", &choixMode);
printf("\n\n");

if (choixMode == 1)
{
int choixNiveau;

printf("Quel niveau voulez vous choisir ? \n\n");
printf("Niveau 1, entre 1 et 10 \n");
printf("Niveau 2, entre 1 et 100 \n");
printf("Niveau 3, entre 1 et 1000 \n");
printf("Niveau 4, entre 1 et 10000 \n");
printf("Niveau 5, entre 1 et 100000 ");
printf("\n\n");
scanf("%d", &choixNiveau);
printf("\n\n");

int max = 10, min = 1;
int nombreMystere = 0, nombreEntre = 0;

switch(choixNiveau)
{
case 1:
max = 10;
break;
case 2:
max = 100;
break;
case 3:
max = 1000;
break;
case 4:
max = 10000;
break;
case 5:
max = 100000;
break;
default:
printf("Votre Nombre est incorrect");
break;
}

srand(time(NULL));
nombreMystere = (rand() % (max - min + 1)) + min;
do
{
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);
if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
} while (nombreEntre != nombreMystere);

}

else if (choixMode == 2)

{
int nombreMystere;
int choixNombre;
printf("Pour information le Joueur 1 ecrit un nombre et le Joueur 2 cherche le nombre\n\n");
printf("Joueur 1 veuillez dire au Joueur 2 si se sera un nombre ");
printf("EXEMPLE: entre 1 et 100\n");
printf("Joueur 1 veuiller taper votre nombre et retenez le !\n\n");
printf("\n\n");
scanf("%d", &nombreMystere);
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");
printf("\n\n");

do
{
printf("Joueur 2 vous devez trouver le nombre que Joueur 1 a ecrit, Quel est le nombre ? ");
printf("\n\n");
scanf("%d", &choixNombre);
printf("\n\n\n\n");
if (choixNombre > nombreMystere)
printf("C'est moins !\n\n");
else if (choixNombre < nombreMystere)
printf("C'est plus !\n\n");
else if (choixNombre == nombreMystere)
printf ("Bravo, Joueur 2 a trouve le nombre mystere !!!\n\n\n");
} while (choixNombre != nombreMystere);

}
return 0;

}


______________________________________________________________

Voila, si vous n'avez pas compris la règle du jeux compiler et executé le.
bye


A voir également:

1 réponse

ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 339
Modifié par ghuysmans99 le 17/04/2010 à 12:14
Le C n'est pas un langage de script, on nomme donc un fichier .c un code source. J'ai remplacé les printf() simples par des puts(). La particularité de cette fonction est qu'elle est plus rapide et qu'elle ajoute systématiquement un \n à la chaine qu'on lui passe en paramètre. J'ai aussi simplifié le code car il y avait des parties redondantes. Voilà le code corrigé :

#include <stdio.h> 
#include <time.h> 
#include <math.h> 
#include <windows.h> 

int DemandeMode() 
{ 
 int ret = 0; 
 printf("A combien de joueurs voulez-vous jouer (1 ou 2) ? "); 
 while (ret < 1 || ret > 2) 
  scanf("%d", &ret); 
 printf("\n"); 
 return ret; 
} 

int DemandeNiveau() 
{ 
 int ret = 0; 
 puts("Quel niveau voulez-vous choisir ?"); 
 puts("- Niveau 1, entre 1 et 10"); 
 puts("- Niveau 2, entre 1 et 100"); 
 puts("- Niveau 3, entre 1 et 1000"); 
 puts("- Niveau 4, entre 1 et 10000"); 
 puts("- Niveau 5, entre 1 et 100000"); 
 puts(""); 
 while (ret < 1 || ret > 5) 
  scanf("%d", &ret); 
 puts("\n\n"); 
 return ret; 
} 

int main () 
{ 
 int choixMode = DemandeMode(), choixNiveau; 
 int nombreMystere, nombreEntre, choixNombre, max, essais = 0; 
  
 srand((int)time(0)); 
  
 if (choixMode == 1) 
 { 
  choixNiveau = DemandeNiveau(); 
  max = pow(10,choixNiveau); 
  nombreMystere = (rand() % max) + 1; 
 } 
 else 
 { 
  puts("Joueur 1, veuillez taper votre nombre et retenez-le !\n"); 
  scanf("%d",&nombreMystere); 
  system("cls"); 
 } 
  
 do 
 { 
  essais++; 
  printf("%sQuel est le nombre ? ",(choixMode==1?"":"Joueur 2, ")); 
  scanf("%d", &nombreEntre); 
  if (nombreMystere > nombreEntre) puts("C'est plus !\n"); 
  else if (nombreMystere < nombreEntre) puts("C'est moins !\n"); 
  else printf ("Bravo, %s trouve le nombre mystere en %d essai%s\n\n",(choixMode==1?"vous avez":"joueur 2 a"),essais,(essais==1?"":"s")); 
 } while (nombreEntre != nombreMystere); 

 system("pause"); 
 return 0; 
} 


VB.NET is good ... VB6 is better !
0
arthurbest78 Messages postés 66 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 26 juin 2014 26
Modifié par arthurbest78 le 17/04/2010 à 12:40
Waouw tu m'impressionne, merci pour la réponse , j'ai surement tord mais je trouve ta programmation difficile à lire.
le puts me sera très utile =) et je ne trouve pas comment tu a fait pour effacer le texte quand le joueur 1 tape le nombre.
0
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 339
17 avril 2010 à 12:40
system("cls");

Méthode bourrine mais efficace. Je l'ai utilisée ici car ça ne me prend qu'une ligne mais ce n'est pas une façon propre de le faire (spécifique à Windows).
0
arthurbest78 Messages postés 66 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 26 juin 2014 26
Modifié par arthurbest78 le 17/04/2010 à 18:08
Merci beaucoup, effectivement très efficace.
J'ai juste une question comment toi tu a apris la programmation, 10 ans d'étude apres le bac ... car moi j'étudie seul, (et je ne suis pas encore au bac) lol mais pour savoir autant de chose que toi que faut il faire ? =)
0
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 339
Modifié par ghuysmans99 le 17/04/2010 à 13:06
Je fais de la programmation depuis à peu près 2006 en tant que hobby. J'ai commencé par le langage BASIC pour Apple 2 et j'ai continué vers le VB6 et l'ASP. Ensuite j'ai appris l'assembleur x86 et le C, toujours comme passe-temps. Dernièrement je me suis mis au PHP et au BASIC Casio. Les langages que j'utilise actuellement sont : le langage de ma calculatrice graphique, le C, le VB, le PHP et l'ASP.

Dis-toi simplement qu'à force de développer et de poser des questions sur les forums on s'améliore ! Après on devient capable d'aider d'autres gens sur les forums et ainsi de suite.
0
arthurbest78 Messages postés 66 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 26 juin 2014 26
17 avril 2010 à 13:11
Je comprend, maintenant. =)
Merci pour le conseil sa m'encourage beaucoup et merci aussi de m'avoir aider dans toute mes question.
A bientôt
0