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 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;
|
||
|
|
}
|
||
|
|
*/
|