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

Création de la fonction initCarte.

Elle initialise une Carte de Jeu à partir d'une carte du package de l'univers du jeu.
La première structure Carte étant obsolète, il faudra la supprimer et enlever les appels aux fonctions qui l'utilisent.
Plutôt que la fonction de la SDL codées en dur dans le main qui initialise utilise la premiere structure Carte, il faudra utiliser la nouvelle fonction.
parent 16301cf7
No related branches found
No related tags found
No related merge requests found
Pipeline #
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "terrain.h"
#include "structures.h"
#include "personnage.h"
......@@ -25,6 +26,28 @@ int get_y(Case *c){
return c->coord_y;
}
/*!
* \fn char * getID(Carte_Jeu * c)
* \brief La fonction retourne un pointeur vers l'ID de la Carte_Jeu.
*
* \param Un pointeur vers la Carte_Jeu à tester
* \return Le pointeur vers l'ID de la Carte_Jeu.
*/
char * getID(Carte_Jeu * c){
return c->id;
}
/*!
* \fn Case * getCase(Carte_Jeu * c, int x, int y)
* \brief La fonction retourne un pointeur vers la Case de la Carte_Jeu aux coordonnées x,y.
*
* \param Un pointeur vers la Carte_Jeu à tester et les coordonnées x et y en entier.
* \return un pointeur vers la Case aux coordonnées x, y.
*/
Case * getCase(Carte_Jeu * c, int x, int y){
return &c->Tab_Cases[x][y];
}
boolean est_occupee(Case *c){
return c->occupee;
}
......@@ -54,8 +77,8 @@ Terrain* get_terrain(Case *c){
*
* \return Le pointeur vers la Carte creee.
*/
Carte * nouvelleCarte(){
Carte * c = malloc(sizeof(Carte));
Carte_Jeu * nouvelleCarte(){
Carte_Jeu * c = malloc(sizeof(Carte_Jeu));
return c;
}
......@@ -65,10 +88,43 @@ Carte * nouvelleCarte(){
*
* \param le pointeur vers la Carte a supprimer.
*/
void deleteCarte(Carte * c){
void deleteCarte(Carte_Jeu * c){
free(c);
}
/*!
* \fn int initCarte(Carte_A * sourceXML, Carte_Jeu * destination, Terrain * terrainPackage)
* \brief La fonction initialise la carte du jeu a partir de la Carte du Package passée en parametre.
*
* \param Un pointeur vers la Carte_A du package qui sera la source, un pointeur vers la Carte_Jeu a initialiser, un pointeur vers le Game_Package de l'univers du jeu
* \return 1 si l'initialisation est correcte, 0 sinon.
*/
int initCarte(Carte_A * sourceXML, Carte_Jeu * destination, Game_Package * pack){
int i,j;
strncpy(getID(destination), sourceXML->id, TAILLE_ID);
for(i=0;i<LARG_MAX_CARTE;i++){
for(j=0;j<HAUT_MAX_CARTE;j++){
switch (sourceXML->lignes[i][j]){
case 'P' :
init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[0]);
break;
case 'R' :
init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[1]);
break;
case 'F' :
init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[2]);
break;
case 'M' :
init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[3]);
break;
default :
return 0;
}
}
}
return 1;
}
/*!
* \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.
......@@ -83,7 +139,6 @@ int init_carte(Carte * 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);
}
}
......
......@@ -20,6 +20,10 @@ int get_x(Case *c);
int get_y(Case *c);
char * getID(Carte_Jeu * c);
Case * getCase(Carte_Jeu * c, int x, int y);
boolean est_occupee(Case *c);
Terrain * init_terrain(Terrain * t, char * n, boolean f, unsigned short int PD);
......@@ -34,12 +38,14 @@ void marquer_libre(Case *c);
Terrain* get_terrain(Case *c);
Carte * nouvelleCarte();
Carte_Jeu * nouvelleCarte();
void deleteCarte(Carte * c);
void deleteCarte(Carte_Jeu * c);
int init_carte(Carte* c);
int initCarte(Carte_A * sourceXML, Carte_Jeu * destination, Game_Package * pack);
/*Case * trouverCase(Carte * c, int x, int y);*/
......
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