Réalisation d'un jeu: le pendu
jeffrey
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, merci de votre aide
#include <stdio.h> #include <stdlib.h> #include <ctype.h> int main(int argc, char* argv[]) { char lettre = 0; // Stocke la lettre proposée par l'utilisateur (retour du scanf) char motSecret[] = "MARRON"; // C'est le mot à trouver int lettreTrouvee[6] = {0}; // Tableau de booléens. Chaque case correspond à une lettre du mot secret. 0 = lettre non trouvée, 1 = lettre trouvée int coupsRestants = 10; // Compteur de coups restants (0 = mort) int i = 0; // Une petite variable pour parcourir les tableaux } printf("Bienvenue dans le Pendu !\n\n"); while (coupsRestants > 0 && !gagne(lettreTrouvee)) { printf("\n\nIl vous reste %d coups a jouer", coupsRestants); printf("\nQuel est le mot secret ? "); /* On affiche le mot secret en masquant les lettres non trouvées Exemple : *A**ON */ for (i = 0 ; i < 6 ; i++) { if (lettreTrouvee[i]) // Si on a trouvé la lettre n° i printf("%c", motSecret[i]); // On l'affiche else printf("*"); // Sinon, on affiche une étoile pour les lettres non trouvées } printf("\nProposez une lettre : "); lettre = lireCaractere(); // Si ce n'était PAS la bonne lettre if (!rechercheLettre(lettre, motSecret, lettreTrouvee)) { coupsRestants--; // On enlève un coup au joueur } if (gagne(lettreTrouvee)) printf("\n\nGagne ! Le mot secret etait bien : %s", motSecret); else printf("\n\nPerdu ! Le mot secret etait : %s", motSecret); return 0; }
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Jeu du pendu en c
- 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
3 réponses
Salut jeffrey,
En ligne 14, tu fermes l'accolade de la fonction main, alors que tu as encore du code à la suite.
Les fonctions
Quelque soit ce que fait la fonction
Ce n'est pas parce que le jeu n'est pas "gagné", qu'il est perdu s'il reste des coups à jouer.
Le
C'est mieux de terminer tes printf par
Dal
En ligne 14, tu fermes l'accolade de la fonction main, alors que tu as encore du code à la suite.
Les fonctions
gagne(),
lireCaractere(),
rechercheLettre()ne sont pas implémentées.
Quelque soit ce que fait la fonction
gagne(), ce code parait étonnant :
if (gagne(lettreTrouvee)) printf("\n\nGagne ! Le mot secret etait bien : %s", motSecret); else printf("\n\nPerdu ! Le mot secret etait : %s", motSecret);
Ce n'est pas parce que le jeu n'est pas "gagné", qu'il est perdu s'il reste des coups à jouer.
Le
return 0;devrait être à l'extérieur de la boucle
while, et juste avant l'accolade fermante de la fonction main.
C'est mieux de terminer tes printf par
\n(sauf ceux en lignes 29 et 31).
Dal
Bonjour Dal,
merci de m'avoir répondu, j'ai un autre problème malheureusement:
Mon programme ne marche pas et on m'indique une erreur à la ligne 4 mais pourtant j'ai suivi - au moins une partie - de tes conseils. Si tu peux m'aider à résoudre ce problème, merci :) .
Voilà la phrase d'erreur:
"fatal error: gagne.h: No such file or directory"
merci de m'avoir répondu, j'ai un autre problème malheureusement:
Mon programme ne marche pas et on m'indique une erreur à la ligne 4 mais pourtant j'ai suivi - au moins une partie - de tes conseils. Si tu peux m'aider à résoudre ce problème, merci :) .
Voilà la phrase d'erreur:
"fatal error: gagne.h: No such file or directory"
Par exemple :
main.c :
gagne.h :
et gagne.c :
les 3 fichiers main.c, gagne.h et gagne.c doivent être dans le même répertoire.
Note que le
Dal
main.c :
#include <stdio.h> #include "gagne.h" #define WORDLEN 6 int main(void) { int lettreTrouvee[WORDLEN] = { 0, 1, 1, 1, 1, 1 }; if (gagne(lettreTrouvee, WORDLEN)) printf("Gagne !\n"); else printf("Le jeu continue...\n"); return 0; }
gagne.h :
#ifndef GAGNE_H #define GAGNE_H int gagne(int * lettreTrouvee, int len); #endif
et gagne.c :
/** * gagne() - test if we have won * @lettreTrouvee: array of booleans * @len: length of array * * if all ints are non-zero, returns true * otherwise return false */ int gagne(int * lettreTrouvee, int len) { int n; for (n=0; n<len; n++) if (!lettreTrouvee[n]) return 0; return 1; }
les 3 fichiers main.c, gagne.h et gagne.c doivent être dans le même répertoire.
Note que le
#include "gagne.h"met le nom de l'entête entre guillemets et non pas entre chevrons, car c'est un entête que le compilateur doit trouver par rapport à l'emplacement de ton source, et non pas un entête d'une bibliothèque.
Dal