From d460f09e6f87d8c5df5877ff9647a12d1d613ccb Mon Sep 17 00:00:00 2001 From: kara-mosr Date: Wed, 8 Oct 2025 11:41:23 +0200 Subject: [PATCH 1/9] add toto --- toto | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 toto diff --git a/toto b/toto new file mode 100644 index 0000000..e69de29 -- 2.51.0 From 8830171c8746d6d3bc9151937277b89a2b2ae4db Mon Sep 17 00:00:00 2001 From: kara-mosr Date: Wed, 8 Oct 2025 11:43:05 +0200 Subject: [PATCH 2/9] add src-karamosr --- src_karamosr/karamosr.c | 104 ++++++++++++++++++++++++++++++++++++++++ toto | 0 2 files changed, 104 insertions(+) create mode 100644 src_karamosr/karamosr.c delete mode 100644 toto diff --git a/src_karamosr/karamosr.c b/src_karamosr/karamosr.c new file mode 100644 index 0000000..984073b --- /dev/null +++ b/src_karamosr/karamosr.c @@ -0,0 +1,104 @@ +#include +#include +#include + +#define LIFES 8 // Nombre de vies au debut du jeu + +// Fonction pour lire une lettre proposee par le joueur +char chooseLetter() { + char letter; + printf("Entrez une lettre : "); + scanf(" %c", &letter); // Le " " avant %c evite de lire un retour chariot + printf("Vous avez choisi la lettre '%c'\n", letter); + return letter; +} + +// Fonction pour calculer la taille d'une chaine (similaire a strlen) +int wordSize(const char *fullWord) { + int size = 0; + while (fullWord[size] != '\0') { + size++; + } + return size; +} + +// Verifie combien de fois la lettre apparait dans fullWord +int checkLetterOccurrence(char letter, const char *fullWord) { + int wordsize = wordSize(fullWord); + int letterOccurrence = 0; + + for (int i = 0; i < wordsize; i++) { + if (fullWord[i] == letter) { // == pour comparer + letterOccurrence++; + } + } + + if (letterOccurrence == 0) { + printf("La lettre '%c' n'apparait pas dans le mot.\n", letter); + } + + return letterOccurrence; +} + +// Remplace les '_' par la lettre trouvee dans partialWord +void placeLetterInPartialWord(char letter, const char *fullWord, char *partialWord) { + int wordsize = wordSize(fullWord); + + for (int i = 0; i < wordsize; i++) { + if (fullWord[i] == letter) { + partialWord[i] = letter; + } + } +} + +// Verifie si le joueur a gagne (si partialWord == fullWord) +int hasWon(const char *fullWord, const char *partialWord) { + return strcmp(fullWord, partialWord) == 0; // 1 si egal, 0 sinon +} + + +/* +int main() { + char fullWord[] = "ordinateur"; // Le mot a deviner + int size = wordSize(fullWord); + char partialWord[size + 1]; // +1 pour le '\0' + + // Initialiser partialWord avec des '_' + for (int i = 0; i < size; i++) { + partialWord[i] = '_'; + } + partialWord[size] = '\0'; + + int lifes = LIFES; + int won = 0; + + printf("Bienvenue au jeu du pendu !\n"); + printf("Le mot a deviner contient %d lettres.\n", size); + + while (lifes > 0 && !won) { + printf("\nMot actuel : %s\n", partialWord); + printf("Vies restantes : %d\n", lifes); + + char letter = chooseLetter(); + + int occurrence = checkLetterOccurrence(letter, fullWord); + if (occurrence > 0) { + placeLetterInPartialWord(letter, fullWord, partialWord); + } else { + lifes--; + } + + if (hasWon(fullWord, partialWord)) { + won = 1; + } + } + + if (won) { + printf("\n Felicitations ! Vous avez trouve le mot : %s\n", fullWord); + } else { + printf("\n Vous avez perdu ! Le mot etait : %s\n", fullWord); + } + + return 0; +} +*/ \ No newline at end of file diff --git a/toto b/toto deleted file mode 100644 index e69de29..0000000 -- 2.51.0 From 0a7067acc3a2d48a4658a6db4204c4ba99c6af12 Mon Sep 17 00:00:00 2001 From: vaisse Date: Wed, 8 Oct 2025 11:56:36 +0200 Subject: [PATCH 3/9] sa pue --- getfuncs.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++ wordbank.txt | 7 +++++ 2 files changed, 80 insertions(+) create mode 100644 getfuncs.c create mode 100644 wordbank.txt diff --git a/getfuncs.c b/getfuncs.c new file mode 100644 index 0000000..a6d0a2b --- /dev/null +++ b/getfuncs.c @@ -0,0 +1,73 @@ +#include +#include +#include + +/* + +*/ +int getFileLength(){ + /*variables*/ + FILE* stream; + int length = 0; + char* line = NULL; + size_t len = 0; + ssize_t read; + + /*prog*/ + stream = fopen("wordbank.txt", "r"); + if (stream == NULL){ + return EXIT_FAILURE; + } + + while((read = getline(&line, &len, stream)) != -1){ + length++; + } + + fclose(stream); + return length-1; +} + +/* + +*/ +int fetchWord(char* fullword, int file_length){ + /*variables*/ + FILE* stream; + int random = (rand() * time(NULL)) % (file_length); + char read[128]; + unsigned int counter = 0; + int char_size = (int) sizeof(char); + + /*prog*/ + printf("%d\n", random); + stream = fopen("wordbank.txt", "r"); + if (stream == NULL){ + return -1; + } + + fseek(stream, random, 0); /*décalage*/ + + while(*read!='\n'){ + fgets(read, sizeof(char), stream); + printf("%c\n", *read); + fullword[counter] = *read; + counter++; + } + + fclose(stream); + return 0; +} + +int main(void){ + /*variables*/ + int flength; + char fullword[128]; + + /*prog*/ + flength = getFileLength(); + if(fetchWord(fullword, flength)!=-1){ + printf("test"); + } + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/wordbank.txt b/wordbank.txt new file mode 100644 index 0000000..135d681 --- /dev/null +++ b/wordbank.txt @@ -0,0 +1,7 @@ +anticonstitutionnellement +éclésiastique +abandonner +seringue +vocifération +éponyme + -- 2.51.0 From 09087508928a371e5ea7404bc72dc9c370d576d0 Mon Sep 17 00:00:00 2001 From: vaisse Date: Wed, 8 Oct 2025 12:35:01 +0200 Subject: [PATCH 4/9] =?UTF-8?q?=C3=A7a=20marche?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- a.out | Bin 0 -> 19376 bytes getfuncs.c | 17 ++++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) create mode 100755 a.out diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..532a5706183bc6506f24f6f1e83b6d0bbe4c5269 GIT binary patch literal 19376 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 Date: Wed, 8 Oct 2025 14:18:02 +0200 Subject: [PATCH 5/9] add src_karamosr --- src_karamosr/karamosr.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src_karamosr/karamosr.c b/src_karamosr/karamosr.c index 984073b..449fc6e 100644 --- a/src_karamosr/karamosr.c +++ b/src_karamosr/karamosr.c @@ -5,7 +5,7 @@ #define LIFES 8 // Nombre de vies au debut du jeu // Fonction pour lire une lettre proposee par le joueur -char chooseLetter() { +char choose_letter() { char letter; printf("Entrez une lettre : "); scanf(" %c", &letter); // Le " " avant %c evite de lire un retour chariot @@ -14,7 +14,7 @@ char chooseLetter() { } // Fonction pour calculer la taille d'une chaine (similaire a strlen) -int wordSize(const char *fullWord) { +int word_size(const char *fullWord) { int size = 0; while (fullWord[size] != '\0') { size++; @@ -23,7 +23,7 @@ int wordSize(const char *fullWord) { } // Verifie combien de fois la lettre apparait dans fullWord -int checkLetterOccurrence(char letter, const char *fullWord) { +int letter_occurrence(char letter, const char *fullWord) { int wordsize = wordSize(fullWord); int letterOccurrence = 0; @@ -41,7 +41,7 @@ int checkLetterOccurrence(char letter, const char *fullWord) { } // Remplace les '_' par la lettre trouvee dans partialWord -void placeLetterInPartialWord(char letter, const char *fullWord, char *partialWord) { +void position_letter(char letter, const char *fullWord, char *partialWord) { int wordsize = wordSize(fullWord); for (int i = 0; i < wordsize; i++) { @@ -52,7 +52,7 @@ void placeLetterInPartialWord(char letter, const char *fullWord, char *partialWo } // Verifie si le joueur a gagne (si partialWord == fullWord) -int hasWon(const char *fullWord, const char *partialWord) { +int has_won(const char *fullWord, const char *partialWord) { return strcmp(fullWord, partialWord) == 0; // 1 si egal, 0 sinon } @@ -81,14 +81,14 @@ int main() { char letter = chooseLetter(); - int occurrence = checkLetterOccurrence(letter, fullWord); + int occurrence = letter_occurrence(letter, fullWord); if (occurrence > 0) { - placeLetterInPartialWord(letter, fullWord, partialWord); + position_letter(letter, fullWord, partialWord); } else { lifes--; } - if (hasWon(fullWord, partialWord)) { + if (has_won(fullWord, partialWord)) { won = 1; } } -- 2.51.0 From ff977105467e7c6554cc961982b0b84d56731f4b Mon Sep 17 00:00:00 2001 From: vaisse Date: Wed, 8 Oct 2025 14:19:47 +0200 Subject: [PATCH 6/9] meileur --- a.out | Bin 19376 -> 0 bytes getfuncs.c | 26 +++++++++++++------------- 2 files changed, 13 insertions(+), 13 deletions(-) delete mode 100755 a.out diff --git a/a.out b/a.out deleted file mode 100755 index 532a5706183bc6506f24f6f1e83b6d0bbe4c5269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19376 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 Date: Wed, 8 Oct 2025 14:29:40 +0200 Subject: [PATCH 7/9] c'est bon pour de vrai cette fois-ci, je promets --- getfuncs.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/getfuncs.c b/getfuncs.c index b378556..44392cc 100644 --- a/getfuncs.c +++ b/getfuncs.c @@ -66,15 +66,15 @@ int fetchWord(char* fullword, int file_length){ return 0; } -/* + int main(void){ int flength; - char fullword[128]; + char fullWord[128]; flength = getFileLength(); - if(fetchWord(fullword, flength)!=-1){ - printf("%s", fullword); + if(fetchWord(fullWord, flength)!=-1){ + printf("%s", fullWord); } return EXIT_SUCCESS; -}*/ \ No newline at end of file +} \ No newline at end of file -- 2.51.0 From da870af20f55ccd92a0208a51b55d46e29588872 Mon Sep 17 00:00:00 2001 From: kara-mosr Date: Wed, 8 Oct 2025 14:33:07 +0200 Subject: [PATCH 8/9] ajout srckaramosr --- src_karamosr/karamosr.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src_karamosr/karamosr.c b/src_karamosr/karamosr.c index 449fc6e..78e6954 100644 --- a/src_karamosr/karamosr.c +++ b/src_karamosr/karamosr.c @@ -24,7 +24,7 @@ int word_size(const char *fullWord) { // Verifie combien de fois la lettre apparait dans fullWord int letter_occurrence(char letter, const char *fullWord) { - int wordsize = wordSize(fullWord); + int wordsize = wor_size(fullWord); int letterOccurrence = 0; for (int i = 0; i < wordsize; i++) { @@ -42,7 +42,7 @@ int letter_occurrence(char letter, const char *fullWord) { // Remplace les '_' par la lettre trouvee dans partialWord void position_letter(char letter, const char *fullWord, char *partialWord) { - int wordsize = wordSize(fullWord); + int wordsize = word_size(fullWord); for (int i = 0; i < wordsize; i++) { if (fullWord[i] == letter) { @@ -57,10 +57,10 @@ int has_won(const char *fullWord, const char *partialWord) { } -/* + int main() { char fullWord[] = "ordinateur"; // Le mot a deviner - int size = wordSize(fullWord); + int size = word_size(fullWord); char partialWord[size + 1]; // +1 pour le '\0' // Initialiser partialWord avec des '_' @@ -79,7 +79,7 @@ int main() { printf("\nMot actuel : %s\n", partialWord); printf("Vies restantes : %d\n", lifes); - char letter = chooseLetter(); + char letter = choose_letter(); int occurrence = letter_occurrence(letter, fullWord); if (occurrence > 0) { @@ -101,4 +101,3 @@ int main() { return 0; } -*/ \ No newline at end of file -- 2.51.0 From 728b6398574a4f7554773c7a3614badc705bf8a5 Mon Sep 17 00:00:00 2001 From: kara-mosr Date: Wed, 8 Oct 2025 16:11:15 +0200 Subject: [PATCH 9/9] add src --- src/facile.txt | 100 ++++++++++++++++++++++++++++++++++++++++++++++++ src/functions.c | 49 ++++++++++++++++++++++++ src/functions.h | 12 ++++++ src/getfuncs.c | 44 +++++++++++++++++++++ src/getfuncs.h | 7 ++++ src/main.c | 61 +++++++++++++++++++++++++++++ src/moyen.txt | 100 ++++++++++++++++++++++++++++++++++++++++++++++++ src/pendu | Bin 0 -> 16368 bytes 8 files changed, 373 insertions(+) create mode 100644 src/facile.txt create mode 100644 src/functions.c create mode 100644 src/functions.h create mode 100644 src/getfuncs.c create mode 100644 src/getfuncs.h create mode 100644 src/main.c create mode 100644 src/moyen.txt create mode 100755 src/pendu diff --git a/src/facile.txt b/src/facile.txt new file mode 100644 index 0000000..2673b8b --- /dev/null +++ b/src/facile.txt @@ -0,0 +1,100 @@ +ARBRE +LIVRE +POMME +CHAIR +TABLE +CHIEN +CHAT +VACHE +CHEVAL +PORTE +MUR +TOIT +LUNE +SOLEIL +MARE +NEIGE +GLACE +FLEUR +ROSE +BLEUET +ORANGE +BANANE +TOMATE +CITRON +PAPAYE +RAISIN +MANGUE +CERISE +OLIVE +PIMENT +SUCRE +SEL +POIVRE +MOUTON +COQ +POULE +LAPIN +AIGLE +TIGRE +LION +ZEBRE +SINGE +PANDA +KOALA +RENARD +OURS +CRABE +POISSON +REKIN +DAUPHIN +BALEINE +PLUIE +VENT +FEU +TERRE +NUAGE +ORAGE +PENTE +MER +RIVAGE +RIVIERE +ETANG +PLAINE +COLLINE +VALLEE +ROCHER +SABLE +PRAIRIE +BOIS +FORET +GIVRE +CAVERNE +CERCLE +ANGLE +CARRE +CUBE +SPHERE +POINT +TRAIT +CHEMIN +ROUTE +RUE +VILLE +VILLAGE +PAYS +MONDE +ETOILE +GALAXIE +COSMOS +TEMPLE +CHAPELLE +JARDIN +FLECHE +ECUREUIL +COUSIN +AMIS +ENNEMI +VILAIN +COQUIN +VOYOU \ No newline at end of file diff --git a/src/functions.c b/src/functions.c new file mode 100644 index 0000000..1c018cb --- /dev/null +++ b/src/functions.c @@ -0,0 +1,49 @@ +#include "functions.h" +#include +#include + +char choose_letter() { + char letter; + printf("Entrez une lettre : "); + scanf(" %c", &letter); + printf("Vous avez choisi la lettre '%c'\n", letter); + return letter; +} + +int word_size(const char *fullWord) { + int size = 0; + while (fullWord[size] != '\0') { + size++; + } + return size; +} + +int letter_occurrence(char letter, const char *fullWord) { + int wordsize = word_size(fullWord); + int letterOccurrence = 0; + + for (int i = 0; i < wordsize; i++) { + if (fullWord[i] == letter) { + letterOccurrence++; + } + } + + if (letterOccurrence == 0) { + printf("La lettre '%c' n'apparait pas dans le mot.\n", letter); + } + + return letterOccurrence; +} + +void position_letter(char letter, const char *fullWord, char *partialWord) { + int wordsize = word_size(fullWord); + for (int i = 0; i < wordsize; i++) { + if (fullWord[i] == letter) { + partialWord[i] = letter; + } + } +} + +int has_won(const char *fullWord, const char *partialWord) { + return strcmp(fullWord, partialWord) == 0; +} diff --git a/src/functions.h b/src/functions.h new file mode 100644 index 0000000..7da9d18 --- /dev/null +++ b/src/functions.h @@ -0,0 +1,12 @@ +#ifndef FUNCTIONS_H +#define FUNCTIONS_H + +#define LIFES 8 + +char choose_letter(); +int word_size(const char *fullWord); +int letter_occurrence(char letter, const char *fullWord); +void position_letter(char letter, const char *fullWord, char *partialWord); +int has_won(const char *fullWord, const char *partialWord); + +#endif diff --git a/src/getfuncs.c b/src/getfuncs.c new file mode 100644 index 0000000..988d7c5 --- /dev/null +++ b/src/getfuncs.c @@ -0,0 +1,44 @@ +#include "getfuncs.h" +#include +#include +#include +#include + +int getFileLength(const char *filename) { + FILE* stream = fopen(filename, "r"); + if (!stream) return -1; + + int file_length = 0; + char buffer[128]; + while (fgets(buffer, sizeof(buffer), stream)) { + file_length++; + } + + fclose(stream); + return file_length; +} + +int fetchWord(const char *filename, char *fullWord, int file_length) { + if (file_length <= 0) return -1; + + srand(time(NULL)); + int random_line = rand() % file_length; + + FILE* stream = fopen(filename, "r"); + if (!stream) return -1; + + int current = 0; + while (fgets(fullWord, 128, stream)) { + if (current == random_line) { + // Retirer le '\n' si présent + char *newline = strchr(fullWord, '\n'); + if (newline) *newline = '\0'; + fclose(stream); + return 0; + } + current++; + } + + fclose(stream); + return -1; +} diff --git a/src/getfuncs.h b/src/getfuncs.h new file mode 100644 index 0000000..cd199b9 --- /dev/null +++ b/src/getfuncs.h @@ -0,0 +1,7 @@ +#ifndef GETFUNCS_H +#define GETFUNCS_H + +int getFileLength(const char *filename); +int fetchWord(const char *filename, char *fullWord, int file_length); + +#endif diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..bd5852e --- /dev/null +++ b/src/main.c @@ -0,0 +1,61 @@ +#include +#include +#include "functions.h" +#include "getfuncs.h" + +void play_game(const char *filename) { + char fullWord[128]; + int flength = getFileLength(filename); + if (fetchWord(filename, fullWord, flength) != 0) { + printf("Erreur de lecture du fichier.\n"); + return; + } + + int size = word_size(fullWord); + char partialWord[size + 1]; + for (int i = 0; i < size; i++) partialWord[i] = '_'; + partialWord[size] = '\0'; + + int lifes = LIFES; + int won = 0; + + printf("Le mot a deviner contient %d lettres.\n", size); + + while (lifes > 0 && !won) { + printf("\nMot actuel : %s\nVies restantes : %d\n", partialWord, lifes); + char letter = choose_letter(); + int occurrence = letter_occurrence(letter, fullWord); + + if (occurrence > 0) { + position_letter(letter, fullWord, partialWord); + } else { + lifes--; + } + + if (has_won(fullWord, partialWord)) won = 1; + } + + if (won) printf("\nFelicitations ! Vous avez trouve le mot : %s\n", fullWord); + else printf("\nVous avez perdu ! Le mot etait : %s\n", fullWord); +} + +void play_hard_mode() { + printf("Mode difficile : vous devez deviner deux mots !\n"); + play_game("facile.txt"); + play_game("moyen.txt"); +} + +int main() { + int choice; + printf("Choisissez le mode :\n1 - Facile\n2 - Moyen\n3 - Difficile\n> "); + scanf("%d", &choice); + + switch(choice) { + case 1: play_game("facile.txt"); break; + case 2: play_game("moyen.txt"); break; + case 3: play_hard_mode(); break; + default: printf("Mode invalide.\n"); + } + + return 0; +} diff --git a/src/moyen.txt b/src/moyen.txt new file mode 100644 index 0000000..6794c48 --- /dev/null +++ b/src/moyen.txt @@ -0,0 +1,100 @@ +ORDINATEUR +PROGRAMME +TELEPHONE +CARNETAGE +UNIVERSITE +HABITATION +BIBLIOTHEQUE +MICROPHONE +NAVIGATEUR +CONDUCTEUR +VOYAGEURS +CONSTRUCTEUR +CHOCOLATERIE +APPARTEMENT +RESTAURANT +IMPRIMERIE +MOUSTACHES +CAMPAGNARD +INVENTAIRE +EXPLORATEUR +COMPAGNON +MATHEMATICS +ASTRONAUTE +ARCHITECTE +MECANICIEN +CHIRURGIEN +ELEPHANTES +HOSPITALES +MONTAGNES +DESERTIQUE +HUMANISME +TROUBADOUR +VOYAGEUSES +CROCODILES +DINOSAURES +HERISSONNE +CULTIVATEUR +PLANTATION +CROISSANCE +DECORATION +TRADITION +ORGANISATEUR +DEVELOPPEUR +INFORMATIQUE +AUTOROUTES +CARTOGRAPHIE +GEOGRAPHIE +HISTORIQUE +LUMINOSITE +TRANSPORTEUR +NAVIGATIONS +IMAGINATION +CITADINITE +POPULATION +MARCHANDISE +ECOLOGISTE +BOTANISTES +ZOOLOGIQUE +HARMONIEUX +MEDITATION +RESISTANCE +INSPIRATION +INNOVATION +CONDITION +SUPERVISEUR +SPECTATEURS +ILLUMINATION +PLATEFORME +PERSPECTIVE +CALCULATEUR +OBSERVATEUR +ALGORITHME +EDUCATEURS +SOUVERAINE +PARLEMENTS +MINISTREES +ACROBATIES +MUSICIENNE +DIRECTION +HORIZONTAL +VERTICALES +REVOLUTION +SCIENTIFIQUE +EXPERIENCE +CONNAISSANCE +LABORATOIRE +ELECTRICIEN +MAGNIFIQUE +COLLECTEURS +DETERMINANT +FASCINANTS +HABITUATION +DISPERSION +FRATERNITE +INTEGRITES +RESPONSABLE +DEPLACEMENT +CONCUBINE +EPHEMERE +SALOPARD \ No newline at end of file diff --git a/src/pendu b/src/pendu new file mode 100755 index 0000000000000000000000000000000000000000..03a8b9ccbbbeceb4c66709fcce1c2a1b4b61ff66 GIT binary patch literal 16368 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 literal 0 HcmV?d00001 -- 2.51.0