Skip to content
Snippets Groups Projects
Commit 7fa127ef authored by ColinDrieu's avatar ColinDrieu
Browse files

Travail sur le fichier case.c

Tentative de correction de l'erreur dans la fonction init_carte()
La fonction semble maintenant marcher, mais en générant des warnings.
J'ai encore des tests à faire sur la fonction : des choses ne marchent pas tout à fait et il y en a d'autre que je ne comprend pas, d'où les affichages dans la console, je les retirerai quand mes tests seront finis.
parent 3cd6d776
No related branches found
No related tags found
No related merge requests found
......@@ -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 dj occupe");
c->occupee=vrai;
}
void marquer_libre(Case *c){
if (c->occupee==faux) printf("case dj 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 dpasse");
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;
}
......@@ -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);*/
......
......@@ -125,6 +125,8 @@ int main()
main_SDL(Map_A);
Carte * c = nouvelleCarte();
init_carte(c);
return 0;
}
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment