1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
/** fonction qui lit le fichier et initialise les enemis
* @in: nom du fichier à lire
* @out: pointeur sur le premier élément du tableau
*/
struct Enemi* LireNiveau(const char* filename)
{
FILE* fichier=fopen(filename,'r');
if(fichier!=NULL)
{
int combien;/* le nombre d'enemi à lire */
int i;/* le compteur pour la boucle */
Enemi *toread; /* pour le tableau d'enemis */
fscanf(fichier,"%d",&combien);
/* tentative d'allocation de la mémoire pour tous les enemis */
toread=malloc(sizeof(Enemi) *nombre);
if(toread!=NULL)
{
/* l'allocation a réussi, on entre dans la boucle d'initialisation
* des enemis au départ du fichier (d'autres solutions peut etre
* meilleures existent sans doute :D)
*/
for(i=0;i<nombre;i++)
{
/* d'abord les valeurs qu'on ne lira pas dans le fichier */
toread[i].Etat=1;
toread[i].DernierTour=0.0;/* quelle valeur veux tu donner???*/
/* puis les valeurs qu'il faut lire dans le fichier */
fscanf(fichier,"%d,%d,%d",&toread[i].TypeEnnemi,
&toread[i].PositionX,
&toread[i].PositionY);
}
/* on peut fermer le fichier, et renvoyer toread */
fclose(fichier);
return toread;
}
/* arrivé ici, l'allocation a échoué... on ferme le fichier et on
* renvoie NULL
* ce sera à gérer dans la fonction appelante ;)
*/
fclose(fichier);
return NULL
}
/* arrivé ici, l'ouverture du fichier a échoué... on renvoie NULL
* (problème a traiter dans la fonction appelante)
*/
return NULL;
} |
Partager