cs_amine124
Messages postés48Date d'inscriptionvendredi 20 février 2009StatutMembreDernière intervention 5 août 2016
-
19 nov. 2011 à 14:15
BunoCS
Messages postés15368Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention12 mai 2023
-
21 nov. 2011 à 11:00
Bonjour,
Je veux créer un petit jeu "motus" qui lit un mot et la comparer par le mot d'or (à trouver); si le joueur trouve qqes lettres, on les affiche dans leurs indices et les restes seront des " -" (tirets); on lui donne que 10 essaies....
Mon pb est lorsque le joueur tape un/des caractère corrects, le programme réserve ces caractères au prochain essai; d'une autre part, à chaque affichage, le mot affiché est tjrs suivi par une petite émoticône que je sais pas son source.
Voilà mon code, veuillez me dire où est le pb, et merci d'avance:
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#define Max 10
int main()
{
char mot[Max]; // mot saisie par l'utilisateur
char texte[Max]; // mot d'or (à trouver)
int taille_mot; // la taille du mot d'or
int compt=0; // compteur des essaies
int compt2; // variable pour decider si le joueur a trouvé le mot d'or ou non
char ch[Max]; // la chaine à afficher
int ii=0; // compteur de la boucle for pour compter les nombres
strcpy(texte,"facteur"); // "facteur" est le mot à trouver
taille_mot=strlen(texte); // calculer la taille du mot d'or
printf("Attention! Vous chercher un mot de %d caractere.\n",taille_mot);
while(compt<10)
{
compt2=0;
strcpy(ch,""); // initialisation de la chaine à afficher
printf("\n\n Essaie Num %d: Donner le mot d'Or: ",(compt+1));
scanf("%s",&mot);
printf("\n");
BunoCS
Messages postés15368Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention12 mai 2023102 21 nov. 2011 à 11:00
De plus, je pense que tu as une confusion entre le nombre d'essai et la longueur du mot à trouver: ce sont 2 variables différentes...
Voici un code corrigé, avec des commentaires explicatifs. N'hésites pas à me demander ce que tu ne comprends pas.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ESSAI_MAX 3
int main()
{
char* mot; // mot saisie par l'utilisateur
char* texte = "facteur"; // mot d'or (à trouver)
int taille_mot; // la taille du mot d'or
int compt=0; // compteur des essaies
int compt2; // variable pour decider si le joueur a trouvé le mot d'or ou non
char* ch; // la chaine à afficher
int i=0; // compteur de la boucle for pour compter les nombres
taille_mot=strlen(texte); // calculer la taille du mot d'or
mot = (char*)malloc(taille_mot*sizeof(char)+1); // allocation de la chaine contenant le mot saisi (+1 pour le caractère de fin de chaine)
printf("Attention! Vous chercher un mot de %d caracteres.\n",taille_mot);
while(compt<ESSAI_MAX)
{
compt2=0;
ch = (char*)malloc(taille_mot*sizeof(char)+1); //init de la chaine à afficher (+1 pour le caractère de fin de chaine)
printf("\n\n Essaie Num %d: Donner le mot d'Or: ",(compt+1));
scanf("%s",mot);
printf("\n");
for(i=0;i<taille_mot;i++)
{
if(mot[i]==texte[i])
{
ch[i]=mot[i];
compt2++;
}
else
ch[i]='-';
}
ch[taille_mot]='\0'; // attention à bien terminer la chaine!
printf("++++ %s ++++ /// %d caracteres justes",ch,compt2);
if(compt2==taille_mot)
{
printf("\n\n*** Felicitations! Vous avez trouve le mot d'Or avec succes. " %s " ***",texte);
break;
}
compt++;
free(ch);
}
if(compt==ESSAI_MAX)
{
printf("\n\n*** Gameover! Vous avez termine le nombre d'essais possibles. ***");
}
// désallocation des chaines
free(mot);
system("pause");
return 0;
}
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...