diff --git a/pendu.c b/pendu.c index 1b0cfd6..4586fda 100644 --- a/pendu.c +++ b/pendu.c @@ -1,7 +1,9 @@ +#include #include #include #include #include +#include #define MAX_WORDS 14 #define MAX_TRIES 6 @@ -35,6 +37,15 @@ void display_hangman(int tries) { } } +/* this function display time out when user does nothing during 30s and verify signal*/ +void sig_handler(int signum){ + if (signum == SIGALRM){ + + printf("\ntime out\n"); + exit (1); + } +} + int main() { srand(time(NULL)); const char *word = words[rand() % MAX_WORDS]; @@ -43,16 +54,21 @@ int main() { int tries = 0; int guessed_correctly = 0; + signal(SIGALRM,sig_handler); + for (int i = 0; i < word_length; i++) { guessed[i] = '_'; } guessed[word_length] = '\0'; while (tries < MAX_TRIES && guessed_correctly < word_length) { + printf("\nMot à deviner : %s\n", guessed); display_hangman(tries); char guess; + alarm(30); printf("Entrez une lettre : "); + alarm(30); scanf(" %c", &guess); int found = 0;