2 Commits

Author SHA1 Message Date
83066e1704 ajout des commentaires. 2024-10-15 12:01:02 +02:00
b4f25a50b0 ajout du cooldown sur le scanf 2024-10-15 11:32:43 +02:00

50
pendu.c
View File

@@ -1,7 +1,9 @@
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#define MAX_WORDS 14
#define MAX_TRIES 6
@@ -35,64 +37,38 @@ void display_hangman(int tries) {
}
}
/*
getWordByLength() function adds the possibility to the user to choose how many letters maximum the word to guess can contains.
/* this function display time out when user does nothing during 30s and verify signal*/
void sig_handler(int signum){
if (signum == SIGALRM){
Returns:
A random word from the words list that correspond to the user input
*/
const char* getWordByLength(){
int maxLetters;
printf("Difficulté - Entrez le nombre de lettres maximum à deviner : ");
scanf(" %d", &maxLetters);
const char *newWords[MAX_WORDS];
int wordsFound = 0;
for (int i = 0; i < MAX_WORDS; i++) {
if(strlen(words[i]) <= maxLetters){
newWords[wordsFound] = words[i];
wordsFound++;
}
printf("\ntime out\n");
exit (1);
}
if(wordsFound==0){
return "";
}
const char *word = newWords[rand() % wordsFound];
/* SECOND WORD TO GUESS (NOT WORKING)
wordsFound = 0;
for (int i = 0; i < MAX_WORDS; i++) {
if(strlen(words[i]) <= maxLetters-strlen(word)){
newWords[wordsFound] = words[i];
wordsFound++;
}
}
if(wordsFound != 0){
word = (const char*) strcat((char *) word, newWords[rand() % wordsFound]);
}*/
return word;
}
int main() {
srand(time(NULL));
const char *word = getWordByLength();
if(word==""){
printf("Aucun mot n'a été trouvé.");
return 1;
}
const char *word = words[rand() % MAX_WORDS];
int word_length = strlen(word);
char guessed[word_length];
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;