Bonjour,
J'ai fait un début de jeu doù il faut deviner un mot (chaussette ici) en C, le voici
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
#define REMAINING_TRIES 10
int main()
{
char word[] = "chaussette";
char word2[strlen(word)+1];
bool not_found = true;
char letter;
int remaining_tries = REMAINING_TRIES;
int c;
for (int i = 0; i < strlen(word); i++)
{
word2[i] = '*';
}
word2[strlen(word)] = '\0';
printf("Find the word: \n");
printf("%s \n", word2);
do
{
scanf("%c", &letter);
while((c = getchar()) != '\n' && c != EOF);
if (strchr(word, letter) != NULL)
{
for (int i = 0; i < strlen(word); i++)
{
if (word[i] == letter)
{
word2[i] = letter;
}
}
printf("%s \n", word2);
if (strcmp(word, word2) == 0)
{
printf("You found the word!\n");
not_found = false;
}
}
else
{
if (remaining_tries == 1)
{
printf("Game Over\n");
return EXIT_FAILURE;
}
remaining_tries--;
printf("Letter is not in the word, %d tries remaining\n", remaining_tries);
}
} while (not_found);
return EXIT_SUCCESS;
}
Quels conseils pourriez vous donner pour améliorer la lisibilité de ce programme, et permettre une saisie sécurisée aussi?
Si vous pouviez ne pas me donner directement le code corrigé mais plutôt m'aiguiller vers les fonctions plus adaptées (en particulier pour la saisie sécurisée), ce serait top!
(en particulier enlever le while((c = getchar()) != '\n' && c != EOF); que je trouve affreux mais qui a le mérite de fonctionner en attendant une solution propre)
Merci d'avance,
Nuliel