forked from menault/TD3_DEV51_Qualite_Algo
		
	
		
			
				
	
	
		
			104 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #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;
 | |
| }
 |