Files
TD3_DEV51_Qualite_Algo/src_karamosr/karamosr.c

104 lines
2.7 KiB
C
Raw Normal View History

2025-10-08 11:43:05 +02:00
#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
2025-10-08 14:18:02 +02:00
char choose_letter() {
2025-10-08 11:43:05 +02:00
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)
2025-10-08 14:18:02 +02:00
int word_size(const char *fullWord) {
2025-10-08 11:43:05 +02:00
int size = 0;
while (fullWord[size] != '\0') {
size++;
}
return size;
}
// Verifie combien de fois la lettre apparait dans fullWord
2025-10-08 14:18:02 +02:00
int letter_occurrence(char letter, const char *fullWord) {
2025-10-08 14:33:07 +02:00
int wordsize = wor_size(fullWord);
2025-10-08 11:43:05 +02:00
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
2025-10-08 14:18:02 +02:00
void position_letter(char letter, const char *fullWord, char *partialWord) {
2025-10-08 14:33:07 +02:00
int wordsize = word_size(fullWord);
2025-10-08 11:43:05 +02:00
for (int i = 0; i < wordsize; i++) {
if (fullWord[i] == letter) {
partialWord[i] = letter;
}
}
}
// Verifie si le joueur a gagne (si partialWord == fullWord)
2025-10-08 14:18:02 +02:00
int has_won(const char *fullWord, const char *partialWord) {
2025-10-08 11:43:05 +02:00
return strcmp(fullWord, partialWord) == 0; // 1 si egal, 0 sinon
}
2025-10-08 14:33:07 +02:00
2025-10-08 11:43:05 +02:00
int main() {
char fullWord[] = "ordinateur"; // Le mot a deviner
2025-10-08 14:33:07 +02:00
int size = word_size(fullWord);
2025-10-08 11:43:05 +02:00
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);
2025-10-08 14:33:07 +02:00
char letter = choose_letter();
2025-10-08 11:43:05 +02:00
2025-10-08 14:18:02 +02:00
int occurrence = letter_occurrence(letter, fullWord);
2025-10-08 11:43:05 +02:00
if (occurrence > 0) {
2025-10-08 14:18:02 +02:00
position_letter(letter, fullWord, partialWord);
2025-10-08 11:43:05 +02:00
} else {
lifes--;
}
2025-10-08 14:18:02 +02:00
if (has_won(fullWord, partialWord)) {
2025-10-08 11:43:05 +02:00
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;
}