From 404a4bcc4ca081db9d37eca3f5026e3ba31ed190 Mon Sep 17 00:00:00 2001 From: Henri Montjoie <henri.montjoie@insa-rennes.fr> Date: Sun, 28 Feb 2016 12:03:30 +0100 Subject: [PATCH] =?UTF-8?q?=C3=A9bauche=20d'initialisation=20depuis=20un?= =?UTF-8?q?=20fichier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/fichier_init.txt | 55 ++++++++++++++++++++++++++++++++++++++ src/case.c | 4 --- src/case.h | 2 ++ src/main.c | 10 +++++++ src/personnage.c | 3 +++ src/structures.h | 6 +++-- src/terrain.c | 17 ++++++++++++ 7 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 resources/fichier_init.txt create mode 100644 src/terrain.c diff --git a/resources/fichier_init.txt b/resources/fichier_init.txt new file mode 100644 index 0000000..f23bb10 --- /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 028278c..c4c790d 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 817cda9..6d7f380 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 a3eb74e..ccddb4d 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 b9754e3..7200e43 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 8f9f0c7..aaf9bc2 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 0000000..d5c5ca6 --- /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; +} -- GitLab