diff --git a/resources/fichier_init.txt b/resources/fichier_init.txt new file mode 100644 index 0000000000000000000000000000000000000000..f23bb106ddf5a559267122b2fee9822057a0b7a7 --- /dev/null +++ b/resources/fichier_init.txt @@ -0,0 +1,55 @@ +<listeterrains> +<terrain> +<nom>plaine</nom> +<franchissable>oui</franchissable> +<ptdep>1</ptdep> +</terrain> +<terrain> +<nom>eau</nom> +<franchissable>non</franchissable> +</terrain> +<terrain> +<nom>montagne</nom> +<franchissable>non</franchissable> +</terrain> +<terrain> +<nom>forêt</nom> +<franchissable>oui</franchissable> +<ptdep>2</ptdep> +</terrain> +</listeterrains> +<listeclasses> +<classe> +<nom>guerrier</nom> +<pv>150</pv> +<ptdep>2</ptdep> +<mana>100</mana> +<listeattaques> +<attaque> +<nom>coup d'épée</nom> +<degats>15</degats> +</attaque> +<attaque> +<nom>écorchure</nom> +<degatsduree>5</degatsduree> +</attaque> +</listeattaques> +</classe> +<classe> +<nom>mage</nom> +<pv>100</pv> +<ptdep>2</ptdep> +<mana>150</mana> +<listeattaques> +<attaque> +<nom>boule de feu</nom> +<degats>15</degats> +<degatsduree>5</degatsduree> +</attaque> +<attaque> +<nom>gel</nom> +<paralysie>oui</paralysie> +</attaque> +</listeattaques> +</classe> +</listeclasses> \ No newline at end of file diff --git a/src/case.c b/src/case.c index 028278c5ecfbae5175cdbdd8c0e5a9ba4bfce929..c4c790db6c22d7fca031d0b7a12040bbaf22363b 100644 --- a/src/case.c +++ b/src/case.c @@ -25,10 +25,6 @@ boolean est_occupee(Case *c){ return c->occupee; } -boolean terrain_franchissable(type_terrain *t){ - return t->franchissable; -} - boolean case_franchissable(Case *c){ return terrain_franchissable(c->terrain); } diff --git a/src/case.h b/src/case.h index 817cda98c3739efb1a1e939e6d539e08ceb13897..6d7f3809f275a9fb86a0179cac5a1d9abd04a9e2 100644 --- a/src/case.h +++ b/src/case.h @@ -9,6 +9,8 @@ int get_y(Case *c); boolean est_occupee(Case *c); +type_terrain* init_terrain(type_terrain *t, type_nom n, boolean f, unsigned short int PD); + boolean terrain_franchissable(type_terrain *t); boolean case_franchissable(Case *c); diff --git a/src/main.c b/src/main.c index a3eb74ebe4914b74d89582837c47988580d040ea..ccddb4df21345913c1124cb56406d6ec483a559f 100644 --- a/src/main.c +++ b/src/main.c @@ -3,6 +3,16 @@ #include "structures.h" +int init_jeu(){ /* crée les différents types de terrains, de classes et d'attaques en lisant dans un fichier */ + FILE *fichier; + fichier=fopen("../resources/fichier_init.txt","r"); + if (fichier==NULL){ + fprintf(stderr,"erreur dans l'ouverture du fichier"); + return 1; + } + +} + int main() { printf("Hello world!\n"); diff --git a/src/personnage.c b/src/personnage.c index b9754e360b60e1dd34169a9ebcc174bdb4691d4c..7200e43eac9bc8a254f79575cdefb9dc5e271259 100644 --- a/src/personnage.c +++ b/src/personnage.c @@ -9,6 +9,7 @@ personnage* init_personnage(personnage *perso, classe *c, Case *casedepart){ perso->classe=*c; perso->points_deplacement=c->points_deplacement_max; perso->PV=c->PV_max; + perso->mana=c->mana_max; perso->position=casedepart; marquer_occupee(casedepart); return perso; @@ -34,6 +35,8 @@ int deplacer_personnage (personnage *perso, Case *destination){ /*d marquer_libre(getPosition(perso)); perso->position=destination; marquer_occupee(getPosition(perso)); + if(getPosition(perso)==destination) return 0; + return 1; } diff --git a/src/structures.h b/src/structures.h index 8f9f0c73ea3108d4eab31aa45128a20032ff9a0d..aaf9bc2af49bccbb6e0b9a5677be0f921eaa5e2d 100644 --- a/src/structures.h +++ b/src/structures.h @@ -5,7 +5,7 @@ #define TAILLE_NOMS 16 /* definition des structures nécessaires : case, classe, etc */ -typedef char type_nom[TAILLE_NOMS]; +typedef char* type_nom; typedef enum {faux, vrai} boolean; @@ -34,9 +34,10 @@ typedef struct { typedef struct { type_nom nom; - attaque attaque; + attaque* attaques; unsigned short int points_deplacement_max; unsigned short int PV_max; + unsigned short int mana_max; } classe; typedef struct { @@ -44,6 +45,7 @@ typedef struct { classe classe; unsigned short int points_deplacement; unsigned short int PV; + unsigned short int mana; boolean paralyse; Case *position; } personnage; diff --git a/src/terrain.c b/src/terrain.c new file mode 100644 index 0000000000000000000000000000000000000000..d5c5ca6e429244cb74785773b49e8c1b3007a59d --- /dev/null +++ b/src/terrain.c @@ -0,0 +1,17 @@ +#include <stdio.h> +#include <stdlib.h> +#include "structures.h" +#include "case.h" +#include "personnage.h" +#include "deplacements.h" + +boolean terrain_franchissable(type_terrain *t){ + return t->franchissable; +} + +type_terrain* init_terrain(type_terrain *t, type_nom n, boolean f, unsigned short int PD){ + t->franchissable=f; + t->nom=n; + t->PD_requis=PD; + return t; +}