Jeu du pendu...
Bonjour,
J'essaye de commencer à coder un jeu du pendu, néanmoins je ne trouve pas d'où vient mon premier problème. Lorsque le joueur entre une lettre qui est bien présente dans le mot, il ne la reconnait pas et renvoie le else qui dit que la lettre n'est pas dans le mot... D'où peut venir le problème ? Voici mon code :
J'essaye de commencer à coder un jeu du pendu, néanmoins je ne trouve pas d'où vient mon premier problème. Lorsque le joueur entre une lettre qui est bien présente dans le mot, il ne la reconnait pas et renvoie le else qui dit que la lettre n'est pas dans le mot... D'où peut venir le problème ? Voici mon code :
#include <stdio.h> #include <stdlib.h> #include "main.h" #include <ctype.h> #include <string.h> // FONCTIONS int compareLettre(char motSecret[], char lettreEntre[]) { int i = 0; int test = 0; while (motSecret[i]) if (motSecret[i++] == lettreEntre[0]) {test = 1;} else {test = 0;} return test; } char lireCaractere() { char caractere = 0; caractere = getchar(); // On lit le premier caractère caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà // On lit les autres caractères mémorisés un à un jusqu'au \n (pour les effacer) while (getchar() != '\n') ; return caractere; // On retourne le premier caractère qu'on a lu } // FIN DES FONCTIONS int main(int argc, char *argv[]) { char lettreEntre[10]; // Pour enregistrer les 10 lettres que va taper le joueur char motSecret[] = "ROUGE"; // Le mot à trouver char *pointeurMotSecret = &motSecret; // Pointeur sur le mot secret int i = 10; // Les 10 coups à jouer char *lettreTrouve = NULL; // Variable qui enregistre si on a trouvé le caractère entré for (i = 10; i > 0; i --) { printf("Il vous reste %d essais\n", i); printf("Quel est le mot ? Entrez un caractere\n"); lettreEntre[i] = lireCaractere(); if (compareLettre(motSecret, lettreEntre) == 1) // S'il y est, on rajoute un coup { i ++; } else { printf("\nCette lettre n'est pas presente dans le mot\n"); } } return 0; }
A voir également:
- 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
À la place de compare lettre tu peux utiliser la fonction strcmp ou strncmp de la libc.
http://www.manpagez.com/man/3/strncmp/
http://www.manpagez.com/man/3/strcmp/
Pour lire la chaîne saisie par un utilisateur je ferais plutôt un scanf qui servirait à remplir un buffer (par exemple char buffer[255]).
Ensuite lireCaractere devrait s'appeller toUpper puisqu'elle convertit la chaîne en majuscule. Le critère d'arrêt de la boucle est le caractère '\0' (fin de chaîne).
Enfin tu devrais avoir
... car motSecret est un char[] et il faut donc le voir comme un char *.
Ou à la rigueur :
Bonne chance
http://www.manpagez.com/man/3/strncmp/
http://www.manpagez.com/man/3/strcmp/
Pour lire la chaîne saisie par un utilisateur je ferais plutôt un scanf qui servirait à remplir un buffer (par exemple char buffer[255]).
Ensuite lireCaractere devrait s'appeller toUpper puisqu'elle convertit la chaîne en majuscule. Le critère d'arrêt de la boucle est le caractère '\0' (fin de chaîne).
Enfin tu devrais avoir
char *pointeurMotSecret = motSecret
... car motSecret est un char[] et il faut donc le voir comme un char *.
Ou à la rigueur :
char *pointeurMotSecret = &motSecret[0]
Bonne chance