Le jeu du pendu
Rack
-
nidhogg-59 Messages postés 102 Date d'inscription Statut Membre Dernière intervention -
nidhogg-59 Messages postés 102 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
après avoir lancé mon programme, la console affiche les deux premiers printf, puis quand je rentre le scanf, monprojet.exe, cesse de fonctionner.
après avoir lancé mon programme, la console affiche les deux premiers printf, puis quand je rentre le scanf, monprojet.exe, cesse de fonctionner.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void initialiser(char *pointeur1, char[], char[], int *pointeur4, char[]);
void afficher(int *pointeur4, char[], char[], char[], char *pointeur1);
int tailleTableau = 5;
int main()
{
char reponse[]="";
int nombreDeVie=10;
int* pointeur4=&nombreDeVie;
char caractereARechercher;
char* pointeur1=&caractereARechercher;
char motMystere[]="ROUGE";
char motCache[]="*****";
afficher(pointeur4, motCache, reponse, motMystere, pointeur1);
}
void initialiser(char *pointeur1, char motCache[], char reponse[], int *pointeur4, char motMystere[]){
int i ;
for(i=0; i<tailleTableau; i++){
char *pointeur1, motCache[i], motMystere[i];
if(*pointeur1 == motMystere[i]){
motCache[i]=*pointeur1;
afficher(pointeur4, motCache, reponse, motMystere, pointeur1);
}
else if(*pointeur1 != motMystere[i]){
*pointeur4--;
afficher(pointeur4, motCache, reponse, motMystere, pointeur1);
}
}
}
void afficher(int *pointeur4, char motCache[], char reponse[], char motMystere[], char *pointeur1){
if(*pointeur4==0){
printf("Vous avez perdu\n");
printf("Souhaitez-vous rejouer?");
scanf("%s", reponse);
}
else if(strcmp(motCache, motMystere)==0){
printf("Bravo! Vous avez gagné!");
printf("Souhaitez-vous rejouer?");
scanf("%s", reponse);
}
else{
printf("Il vous reste %d vies\n", *pointeur4);
printf("Quel est le mot secret? %s", motCache);
scanf("%c", pointeur1);
initialiser(pointeur1, motCache, reponse, pointeur4, motMystere);
}
}
A voir également:
- Le jeu du pendu
- Jeu du pendu - Télécharger - Vie quotidienne
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu zuma - Télécharger - Jeux vidéo
- Logo jeu - Télécharger - Jeux vidéo
1 réponse
Bonjour!
Au vu des erreurs données par ton prog, on peut en déduire déjà la plupart des erreurs:
Il vous reste 10 vies
Quel est le mot secret? *****a
Bravo! Vous avez gagné!Souhaitez-vous rejouer?o
Il vous reste 134514690 vies
Quel est le mot secret? d??d?Bravo! Vous avez gagné!Souhaitez-vous rejouer?o
Il vous reste 134520832 vies
Quel est le mot secret? ?Bravo! Vous avez gagné!Souhaitez-vous rejouer?o
Il vous reste -1081481981 vies
Quel est le mot secret? ?????T???W?Bravo! Vous avez gagné!Souhaitez-vous rejouer?o
Bref, ton problème se situe au niveau des pointeurs sur le nombre de vies, sur le mot 'mystère' et dans le teste de réussite à trouver le mot.
Au passage, je te conseille vivement de renommer tes pointeurs...
Cette fonction, 'Initialiser', tu devrais entièrement la revoir car pour chaque lettre du mot, même si on trouve la bonne réponse, la variable nombre de vie est décrémentée.
De plus il ne faut pas que l'appel de la fonction afficher soit dans la boucle for.
Il y a aussi cette ligne qui est inutile:
char *pointeur1, motCache[i], motMystere[i];
Et dans afficher, le teste avec strcmp n'est pas bon, la tu teste si les chaînes sont différentes et dans ce cas, tu affiche que le joueur a gagné, c'est l'inverse qu'il doit se passer.
De manière générale, deux fonctions qui s'appellent l'une l'autre n'est pas le meilleur moyen de faire des boucle... et je pense que c'est ça qui pose le plus gros problème dans ton code.
Je te conseille de mettre une while.
Sur ce, bosse bien et bon courage!
Au vu des erreurs données par ton prog, on peut en déduire déjà la plupart des erreurs:
Il vous reste 10 vies
Quel est le mot secret? *****a
Bravo! Vous avez gagné!Souhaitez-vous rejouer?o
Il vous reste 134514690 vies
Quel est le mot secret? d??d?Bravo! Vous avez gagné!Souhaitez-vous rejouer?o
Il vous reste 134520832 vies
Quel est le mot secret? ?Bravo! Vous avez gagné!Souhaitez-vous rejouer?o
Il vous reste -1081481981 vies
Quel est le mot secret? ?????T???W?Bravo! Vous avez gagné!Souhaitez-vous rejouer?o
Bref, ton problème se situe au niveau des pointeurs sur le nombre de vies, sur le mot 'mystère' et dans le teste de réussite à trouver le mot.
Au passage, je te conseille vivement de renommer tes pointeurs...
Cette fonction, 'Initialiser', tu devrais entièrement la revoir car pour chaque lettre du mot, même si on trouve la bonne réponse, la variable nombre de vie est décrémentée.
De plus il ne faut pas que l'appel de la fonction afficher soit dans la boucle for.
Il y a aussi cette ligne qui est inutile:
char *pointeur1, motCache[i], motMystere[i];
Et dans afficher, le teste avec strcmp n'est pas bon, la tu teste si les chaînes sont différentes et dans ce cas, tu affiche que le joueur a gagné, c'est l'inverse qu'il doit se passer.
De manière générale, deux fonctions qui s'appellent l'une l'autre n'est pas le meilleur moyen de faire des boucle... et je pense que c'est ça qui pose le plus gros problème dans ton code.
Je te conseille de mettre une while.
Sur ce, bosse bien et bon courage!