2 Commits

Author SHA1 Message Date
509db16917 Added comments 2024-10-15 11:59:29 +02:00
2fd6561591 Added difficulty 2024-10-15 11:32:49 +02:00

50
pendu.c
View File

@@ -1,9 +1,7 @@
#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
@@ -37,38 +35,64 @@ 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){
/*
getWordByLength() function adds the possibility to the user to choose how many letters maximum the word to guess can contains.
printf("\ntime out\n");
exit (1);
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++;
}
}
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 = words[rand() % MAX_WORDS];
const char *word = getWordByLength();
if(word==""){
printf("Aucun mot n'a été trouvé.");
return 1;
}
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;