Delete test.c

This commit is contained in:
What about KSCH 2022-10-19 08:50:42 +02:00 committed by GitHub
parent b0b542a4a2
commit e50ae41d4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 0 additions and 210 deletions

210
test.c
View File

@ -1,210 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <time.h>
#include "pendu.h"
int main (int argc, char* argv[])
{
int nombreMots = compteurMot();
int i , j;
char caractereRecup = 0;
int numeroMot = tirageMot(nombreMots);
int nombreLettre = tailleMot(numeroMot);
//printf("%d %d\n",numeroMot, nombreLettre);
char* motSecret = NULL;
motSecret=malloc(nombreLettre * sizeof(char));//on crée un tableau de la taille du mot tiré au hasard
if (motSecret==NULL)
{
exit(0);
}
recupMot(numeroMot,nombreLettre,motSecret);
//affiche(motSecret,nombreLettre);
char* motMystere = NULL;
motMystere=malloc(nombreLettre * sizeof(char));
if (motMystere==NULL)
{
exit(0);
}
creerMotMystere(nombreLettre,motMystere);
printf("Bienvenue dans le jeu du pendu\n");
for (i = 0 ; i < 10 ; i++) // compteur pour le nombre de partie
{
printf("Il vous reste %d coups\n", 10-i);
printf("Quel est le mot secret ? %s\n",motMystere);
caractereRecup = recupCaract();
//ici on recupère le caractere via une fonction qui va en plus vider le buffer et passer le caracter en majuscule
for (j = 0 ; motSecret[j] != '\0' ; j++)
// compteur pour passer en revue les caractere du mot Secret et le comparé avec le caractere saisi
{
if (motSecret[j] == caractereRecup)
// Si la caractere saisi est dans le motsecret alors on l'affiche
{
motMystere[j] = caractereRecup;
i--;
}
}
printf("%s\n",motMystere);
if (verification(motMystere))
//cette fonction regarde s'il reste des caractere non trouvé '*' dans le mot et retourne 1 si non
{
printf("Vous avez gagné !\n");
exit(0);
}
}
printf("Vous avez perdu, le mot mystère était : ");
affiche(motSecret,nombreLettre);
printf("\n");
free(motSecret);
free(motMystere);
return 0;
}
char recupCaract ()//recupère les caractères saisie par l'utilisateur
{
char caractere = 0;
scanf("%c",&caractere);
caractere = toupper(caractere); // On met en majuscule le caractere saisie par l'utilisateur
while(getchar() != '\n'); //on vide le buffer
return caractere; // on renvoit le caractere saisi
}
int verification(char motDecouvert[])//vérifie que le mot ne soit pas totalement découvert
{
int i;
for (i=0; motDecouvert[i] != '\0'; i++)//Tant qu'on est pas arrivé a la fin de al chaine de caractère
{
if (motDecouvert[i]=='*')// Si une lettre mystère est trouvé alors on renvoit 0, la partie n'est pas gagné
return 0;
}
return 1; //sinon c'est que tout a été découvert, et on renvoit 1
}
int compteurMot() // on compte les mots présent dans le fichier
{
FILE* fichier = NULL;
int nombreDeMots = 0;
char lettreLue = 0;
fichier = fopen("dictionnaire","r"); // on ouvre le fichier dictionnaire en mode lecture
if (fichier != NULL) //on test si l'ouverture a fonctionnée
{
rewind(fichier); //on place le curseur en haut du fichier
while ((lettreLue = fgetc(fichier)) != EOF) // Tant qu'on a pas atteind la fin du fichier
{
if (lettreLue == '\n') // Quand on trouve un \n c'est qu'il y a un nouveau mot
{
nombreDeMots++;
}
}
fclose(fichier);
}
return(nombreDeMots);
}
int tirageMot(int nombreDeMots)//tire au hasard un numéro d'après le nombre de mots
{
int numeroMot= 0;
srand(time(NULL)); // Initialise le générateur de nombre aléatoire
numeroMot = (rand() % nombreDeMots)+1; //+1 sinon il peut tirer 0
return(numeroMot);
}
int tailleMot(int numeroMot) //calcul la taille d'un mot d'après sa position dans la liste
{
FILE* fichier = NULL;
char lettreLue = 0;
int compteurEspace = 0;
int compteurLettre = 0;
fichier = fopen("dictionnaire","r"); // on ouvre le fichier dictionnaire en mode lecture
if (fichier != NULL) //on test si l'ouverture a fonctionnée
{
rewind(fichier); //on place le curseur en haut du fichier
while (compteurEspace != numeroMot-1) // Tant qu'on a pas atteind la ligne avant le mot tiré
{
lettreLue = fgetc(fichier); //on lit les caractères 1 à 1
if (lettreLue == '\n') // Quand on trouve un \n c'est qu'il y a un nouveau mot
{
compteurEspace++; //on incrémente donc le nb d'espace (correspondant au nb de ligne)
}
}
//une fois sortie de cette boucle on est donc juste devant le mot tiré
//On fait un do while sinon le premier caractère sera \n
do
{
lettreLue = fgetc(fichier);
compteurLettre++; //on compte le nombre de lettre jusqu'a la fin de al ligne
}
while (lettreLue != '\n');
compteurLettre--; //on retire 1 au compteur car il a compté le \n du début
}
return (compteurLettre);
}
void recupMot(int numeroMot,int tailleMot,char *motSecret) //ici on recupere le mot d'après son numéro
{
FILE* fichier = NULL;
char lettreLue = 0;
int compteurEspace = 0;
int compteurLettre = 0;
int i = 0;
fichier = fopen("dictionnaire","r"); // on ouvre le fichier dictionnaire en mode lecture
if (fichier != NULL) //on test si l'ouverture a fonctionnée
{
rewind(fichier); //on place le curseur en haut du fichier
while (compteurEspace != numeroMot-1) // Tant qu'on a pas atteind la ligne avant le mot tiré
{
lettreLue = fgetc(fichier); //on lit les caractères 1 à 1
if (lettreLue == '\n') // Quand on trouve un \n c'est qu'il y a un nouveau mot
{
compteurEspace++; //on incrémente donc le nb d'espace (correspondant au nb de ligne)
}
}
//une fois sortie de cette boucle on est donc juste devant le mot tiré
do //on doit le faire 1 fois sinn la condition ne marche pas
{
lettreLue = fgetc(fichier);
motSecret[i] = lettreLue;
i++;
}
while (lettreLue != '\n');
}
}
void affiche(char *motSecret, int tailleMot)//pour afficher le mot tiré
{
int i;
for ( i=0 ; i < tailleMot ; i++)
{
printf("%c",motSecret[i]);
}
}
void creerMotMystere(int tailleMot, char *motMystere)//Creer un mot mystère de la taille de celui tiré
{
int i;
for (i=0; i<tailleMot; i++)
{
motMystere[i]= '*';
}
}