diff --git a/src/case.c b/src/case.c index 19c89fbf60381e974526d835ce07e3dbfe5e92ad..018494f4379d8b96cd89d1c023ba711fe90261cc 100644 --- a/src/case.c +++ b/src/case.c @@ -10,13 +10,12 @@ * \brief Fichier contenant le code des fonctions liees aux cases */ - -Case * init_case(Case * c,int x, int y, Terrain *t){ +void init_case(Case * c,int x,int y, Terrain *t){ c->coord_x=x; c->coord_y=y; c->terrain=t; c->occupee=faux; - return c; + printf("size of Case : %d\nadresse x : %d\nadresse y : %d\nadresse terrain : %d \nadresse occupee : %d\n",sizeof(*c),&c->coord_x, &c->coord_y,&c->terrain,&c->occupee); } int get_x(Case *c){ @@ -36,34 +35,58 @@ boolean case_franchissable(Case *c){ } void marquer_occupee(Case *c){ - if (c->occupee==vrai) printf("case déjà occupée"); c->occupee=vrai; } void marquer_libre(Case *c){ - if (c->occupee==faux) printf("case déjà libre"); c->occupee=faux; } Terrain* get_terrain(Case *c){ if (c->terrain==NULL){ - fprintf(stderr,"pas de terrain"); + return NULL; } return c->terrain; } -int init_carte(Carte* c,unsigned short int largeur, unsigned short int hauteur){ + /*! + * \fn Carte * nouvelleCarte() + * \brief La fonction alloue l'espace en memoire pour une structure Carte et renvoye un pointeur vers la structure creee + * + * \return Le pointeur vers la Carte creee. + */ +Carte * nouvelleCarte(){ + Carte * c = malloc(sizeof(Carte)); + return c; +} + + /*! + * \fn void deleteCarte(Carte * c) + * \brief libere l'espace memoire alloue a une Carte + * + * \param le pointeur vers la Carte a supprimer. + */ +void deleteCarte(Carte * c){ + free(c); +} + + /*! + * \fn init_carte(Carte* c,unsigned short int largeur, unsigned short int hauteur) + * \brief La fonction initialise la position des Case contenues dans la Carte et les definit comme libres. + * l'attribut Terrain de la Carte est initialisé a NULL, il doit etre change a partir d'une autre fonction. + * + * \param Un pointeur vers la Carte a initialiser, des entiers representant la largeur et la hauteur de la carte. + * \return 0 si la Carte n'a pas ete correctement initialisee (si la taille maximum de la carte est depassee), 1 sinon. + */ +int init_carte(Carte * c){ int i,j,n; - n=0; - if (largeur*hauteur>TAILLE_MAX_CARTE){ - printf("erreur : taille maximum de la carte dépassée"); - return 1; - } - for (i=0;i<(largeur);i++){ - for (j=0;j<(hauteur);j++){ - init_case(c[n],i,j,NULL); - n++; + n=c; + for (i=0;i<LARG_MAX_CARTE;i++){ + for (j=0;j<HAUT_MAX_CARTE;j++){ + init_case(n,i,j,NULL); + printf("Adresse Case : %d, x=%d, y=%d\n\n",n,get_x(n),get_y(n)); + n=n+sizeof(Case); } } - return 0; + return 1; } diff --git a/src/case.h b/src/case.h index 50035c9e020141c710d3e3edb53a71db4ab9827f..009684164b50155add042f5e9bdcf892f5343f68 100644 --- a/src/case.h +++ b/src/case.h @@ -14,7 +14,7 @@ Case* Librairie_Cases(const char *filename); Case* Remplir_Cases_log(const char *filename); -Case* init_case(Case *c,int x, int y, Terrain *t); +void init_case(Case *c,int x, int y, Terrain *t); int get_x(Case *c); @@ -34,7 +34,11 @@ void marquer_libre(Case *c); Terrain* get_terrain(Case *c); -int init_carte(Carte* c,unsigned short int largeur, unsigned short int hauteur); +Carte * nouvelleCarte(); + +void deleteCarte(Carte * c); + +int init_carte(Carte* c); /*Case * trouverCase(Carte * c, int x, int y);*/ diff --git a/src/main.c b/src/main.c index 998074b93cebf6977ec82dc59cd1cf7a33f38b69..35b944358833c4fc7adee2dccf7c8233a0d8b4c3 100644 --- a/src/main.c +++ b/src/main.c @@ -125,6 +125,8 @@ int main() main_SDL(Map_A); + Carte * c = nouvelleCarte(); + init_carte(c); return 0; } diff --git a/src/structures.h b/src/structures.h index 17e4dbd303e48fedd990158fea8e7fc83ed5a4b1..901620d82bd726714deb0db2eb3eac357fefaf32 100644 --- a/src/structures.h +++ b/src/structures.h @@ -19,7 +19,7 @@ #define STRUCTURES_H_INCLUDED /*! \def TAILLE_MAX_CARTE */ -#define TAILLE_MAX_CARTE 256 +#define TAILLE_MAX_CARTE 160 /*! \def TAILLE_ID */ #define TAILLE_ID 8 /*! \def TAILLE_NOMS */ @@ -29,7 +29,7 @@ /*! \def LARG_MAX_CARTE */ #define LARG_MAX_CARTE 16 /*! \def LONG_MAX_CARTE */ -#define HAUT_MAX_CARTE 16 +#define HAUT_MAX_CARTE 10 /*! \enum boolean * \brief Definition du type Boolean. @@ -73,8 +73,8 @@ typedef struct Terrain{ * sizeof(Case) = 12 octets */ typedef struct Case{ - unsigned short int coord_x; /*!< Abscisse de la case*/ - unsigned short int coord_y; /*!< Ordonnee de la case*/ + int coord_x; /*!< Abscisse de la case*/ + int coord_y; /*!< Ordonnee de la case*/ Terrain * terrain; /*!< Le type de terrain de la case*/ boolean occupee; /*!< La case est occupee ou non par un personnage*/ } Case;