forked from menault/TD3_DEV51_Qualite_Algo
		
	
							
								
								
									
										80
									
								
								getfuncs.c
									
									
									
									
									
								
							
							
						
						
									
										80
									
								
								getfuncs.c
									
									
									
									
									
								
							| @@ -1,80 +0,0 @@ | |||||||
| #include <stdlib.h> |  | ||||||
| #include <stdio.h> |  | ||||||
| #include <time.h> |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| récupère le nombre de lignes dans la banque de mots |  | ||||||
| */ |  | ||||||
| int getFileLength(){ |  | ||||||
| 	/*variables*/ |  | ||||||
| 	FILE* stream; |  | ||||||
| 	int file_length = 0;  |  | ||||||
| 	char* line = NULL; |  | ||||||
| 	size_t length = 0; |  | ||||||
| 	ssize_t read; |  | ||||||
|  |  | ||||||
| 	/*prog*/ |  | ||||||
| 	stream = fopen("wordbank.txt", "r"); |  | ||||||
| 	if (stream == NULL){ |  | ||||||
|         return EXIT_FAILURE; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	while((read = getline(&line, &length, stream)) != -1){ |  | ||||||
|     	file_length++; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     fclose(stream); |  | ||||||
|     return file_length-1; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| récupère un mot aléatoire dans la banque de mots |  | ||||||
| */ |  | ||||||
| int fetchWord(char* fullword, int file_length){ |  | ||||||
| 	/*variables*/ |  | ||||||
| 	FILE* stream; |  | ||||||
| 	int random = (rand() * time(NULL)) % (file_length); |  | ||||||
| 	char read[8]; |  | ||||||
| 	unsigned int counter = 0; |  | ||||||
| 	int char_size = (int) sizeof(char); |  | ||||||
| 	int line=0; |  | ||||||
| 	int offset=0; |  | ||||||
|  |  | ||||||
| 	/*prog*/ |  | ||||||
| 	printf("%d\n", random); |  | ||||||
| 	stream = fopen("wordbank.txt", "r"); |  | ||||||
| 	if (stream == NULL){ |  | ||||||
|         return -1; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	while((!feof(stream))&&(offset!=random)){ |  | ||||||
| 		fread(read, sizeof(char), 1, stream); |  | ||||||
| 		if(*read=='\n'){ |  | ||||||
| 			offset++; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	*read=' '; |  | ||||||
|  |  | ||||||
| 	while(*read!='\n'){ |  | ||||||
| 		fread(read, sizeof(char), 1, stream); |  | ||||||
| 		fullword[counter] = *read; |  | ||||||
| 		counter++; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	fclose(stream); |  | ||||||
| 	return 0; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| int main(void){ |  | ||||||
| 	int flength; |  | ||||||
| 	char fullWord[128]; |  | ||||||
|  |  | ||||||
| 	flength = getFileLength(); |  | ||||||
| 	if(fetchWord(fullWord, flength)!=-1){ |  | ||||||
| 		printf("%s", fullWord); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return EXIT_SUCCESS; |  | ||||||
| } |  | ||||||
| @@ -1,103 +0,0 @@ | |||||||
| #include <stdio.h> |  | ||||||
| #include <stdlib.h> |  | ||||||
| #include <string.h> |  | ||||||
|  |  | ||||||
| #define LIFES 8     // Nombre de vies au debut du jeu |  | ||||||
|  |  | ||||||
| // Fonction pour lire une lettre proposee par le joueur |  | ||||||
| char choose_letter() { |  | ||||||
|     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 word_size(const char *fullWord) { |  | ||||||
|     int size = 0; |  | ||||||
|     while (fullWord[size] != '\0') { |  | ||||||
|         size++; |  | ||||||
|     } |  | ||||||
|     return size; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Verifie combien de fois la lettre apparait dans fullWord |  | ||||||
| int letter_occurrence(char letter, const char *fullWord) { |  | ||||||
|     int wordsize = wor_size(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 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; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Verifie si le joueur a gagne (si partialWord == fullWord) |  | ||||||
| int has_won(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 = word_size(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 = 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("\n Felicitations ! Vous avez trouve le mot : %s\n", fullWord); |  | ||||||
|     } else { |  | ||||||
|         printf("\n Vous avez perdu ! Le mot etait : %s\n", fullWord); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     return 0; |  | ||||||
| } |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| anticonstitutionnellement |  | ||||||
| éclésiastique |  | ||||||
| abandonner |  | ||||||
| seringue |  | ||||||
| vocifération |  | ||||||
| éponyme |  | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user