8 Commits

Author SHA1 Message Date
159c83ea8d Added difficulty and comments 2024-10-23 21:01:29 +02:00
8877777c62 Commentaires 2024-10-15 12:27:04 +02:00
10c9aca59a Actualiser pendu.c 2024-10-15 12:16:52 +02:00
3c4ed87d6c ajout des commentaires. 2024-10-15 12:12:39 +02:00
ebfe656cf4 ajout du cooldown sur le scanf 2024-10-15 12:12:04 +02:00
4960203ced Merge pull request 'dev-landrin' (#6) from dev-landrin into master
Reviewed-on: #6
2024-10-15 12:04:07 +02:00
509db16917 Added comments 2024-10-15 11:59:29 +02:00
2fd6561591 Added difficulty 2024-10-15 11:32:49 +02:00

77
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,6 +37,10 @@ void display_hangman(int tries) {
}
}
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
/*
this function allow to save the last party
@@ -74,27 +80,96 @@ void save_party(char * status, const char * good_word, char try[]) {
fclose(fichier); // On ferme le fichier qui a été ouvert
}
=======
<<<<<<< HEAD
=======
void sig_handler(int signum){
printf("\ntime out\n");
exit (1);
>>>>>>> b4f25a5 (ajout du cooldown sur le scanf)
=======
=======
>>>>>>> dev-rocherl
>>>>>>> 083b1f2 (Commentaires)
/* 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);
}
<<<<<<< HEAD
>>>>>>> 83066e1 (ajout des commentaires.)
=======
>>>>>>> dev-rocherl
=======
/*
getWordByLength() function adds the possibility to the user to choose how many letters maximum the word to guess can contains.
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;
>>>>>>> dev-schied
}
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;
char try[MAX_TRIES]; //save the carcater try
signal(SIGALRM,sig_handler);
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);