razily
Messages postés250Date d'inscriptionlundi 9 mars 2009StatutMembreDernière intervention 4 décembre 2013
-
13 nov. 2009 à 13:45
razily
Messages postés250Date d'inscriptionlundi 9 mars 2009StatutMembreDernière intervention 4 décembre 2013
-
16 nov. 2009 à 13:22
Bonjour ,
voilà j'ai un projet de Mastermind à rendre bientôt et je coince sur une partie du code notamment sur l'enregistrement ! l'idée c'est que le joueur pourra interrompre à tout moment et sauvegarder le jeu en tapant SAVE !! poue cela j'ai pensé à créer un structure et sauvegarder las infos nécessaires pour le joueur : notons que le jeu se déroule en tapant une série de 5 lettres et selon le resultat : l'écran doit afficher le nombre de bien placé et mal placé jusqu'à ce qu'on a trouvé la bonne combinaison (qui est determiné aléatoirement ) pour l'enregistrement alors , je pensais qu'il faut retenir : nom - prenom et surtout la série de combinaison à chercher voici : une partiedu code:
#ifndef ENREGISTRERPARTIE_C_INCLUDED
#define ENREGISTRERPARTIE_C_INCLUDED
#include<stdio.h>
#include<stdlib.h>
#include"Prototype.h"
#include<string.h>
/*********************************
* la Structure
*********************************/
// pour le fichier Enregistrement
typedef struct Telement
{
char TablStock[6]; // stocke les combinaisons à chercher
char nom [10]; // peremettant de distinguer le joeur
char prenom[10];
} Element ;
/**************************************
* PROCEDURE ENREGISTREMENT PARTIE ************
***************************************/
void EnregistrerPartie(char TableauStock[6],char nom[15] , char prenom[15])
{
FILE * fichier = NULL;
// char nom [20];
//char prenom [20];
int trouve = 0;
Element var;
int c;
/**********************************************
*********************************************
fichier = fopen("FichierEnregistrement.typ", "a+" );
OUVERTURE D'UN FICHIER TYPÉ
***********************************************/
fichier = fopen("Enreg.typ","r+");
if(fichier==NULL)
{
fprintf(stderr,"Impossible d'ouvrir le fichier\n");
}
else
{
//printf("Nom :"); scanf("%s",nom);
//printf("Prenom :"); scanf("%s",prenom);
fread(&var,sizeof(Element),1,fichier);
//while(!feof(fichier)&&(trouve==0))
while(((c=fgetc(fichier)) != EOF)&&(trouve==0))
{
if((strcasecmp(var.nom,nom)==0)&&(strcasecmp(var.prenom,prenom)==0))
{
trouve = 1;
//var.proposition = propo;
// var.trouve = nbretrouve;
//strcpy(var.TablFinal,TableauFinal);
strcpy(var.TablStock,TableauStock);
fwrite(&var,sizeof(Element),1,fichier);
printf("Partie enregistrée!!\n");
}
else
{
fread(&var,sizeof(Element),1,fichier);
}
}
// s'il n'existe pas dans le fichier on le cree
if(trouve==0)
{
// on place dans la fin de fichier
fseek(fichier,1,SEEK_END);
/*//////////////////*/
strcpy(var.nom , nom);
strcpy( var.prenom , prenom);
// var.proposition = propo;
// var.trouve = nbretrouve;
// strcpy(var.TablFinal,TableauFinal);
strcpy(var.TablStock,TableauStock);
// on insère dans le fichier
fwrite(&var,sizeof(Element),1,fichier);
printf("Partie enregistrée!!\n");
}
}
fclose(fichier);
}
void LireFichier()
{
FILE *fvar=NULL;
Element var;
int c;
fvar = fopen("Enreg.typ","r");
if(fvar==NULL)
{
printf("Impossible d'ouvrir le fichier \n");
}
else
{
fread(&var,sizeof(Element),1,fvar);
//while(!feof(fvar))
while((c=fgetc(fvar)) != EOF)
{
printf("nom : %s",var.nom);
printf("\n");
printf("prenom : %s",var.prenom);
printf("\n");
printf("case recherchee: %s",var.TablStock);
printf("\n");
fread(&var,sizeof(Element),1,fvar);
}
}
fclose(fvar);
}
#endif // ENREGISTRERPARTIE_C_INCLUDED
mon premier problème , c'est sur le mode d'ouverture est ce que a+ serait adéquat , car l'idée c'est que si le joueur est déjà dans la base , seule la combinaison sera modifiée sinon on l'ajoute (soit en fin de fichier )
mon deuxième problème c'est comment présente -t-on pour ce genre de problème s'agit il d'un fichier texte ou binaire (je ne sais pas trop distinguer les deux )
et ma troisième demande c'est que si vous étiez à ma place , comment vous le fairez pour faciliter les choses !!
car après avoir compiler çà ; le resultat n'est pas du tout conforme aux attentes
nom : jean
prenom : ludovic
case recherchee: RBJBN
nom : ULIO
prenom : Ebastien
case recherchee: BJBN
nom : LIO
prenom : DOVIC
case recherchee: JBN
nom : isca
prenom : mihone
case recherchee: LBV
nom : isca
prenom : mihone
case recherchee: BBL
nom : sca
prenom : ihone
case recherchee: NR
nom : o
prenom : vic
case recherchee: N
nom :
prenom :
case recherchee:
Process returned 0 (0x0) execution time : 5.973 s
Press ENTER to continue.
comme vous pouvez le voir seule la première affichage est juste : jean ludovic mais après la suite : il coupe soit le nom ou le prenom et aussi la combinaison et remarquer à la fin
exemple : Ebastien au lieu de Sebastien