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

Ajout du fichier joueur.c

Code des fonctions du fichier joueur.c
Mise a jour du fichier joueur.h
parent 3e4bdee6
No related branches found
No related tags found
No related merge requests found
/*!
* \file joueur.c
* \brief Fichier contenant le code des fonctions liees a la structure Joueur.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "structures.h"
#include "joueur.h"
/*!
* \fn Joueur * nouveauJoueur()
* \brief La fonction cree un nouveau Joueur.
*
* \return Un pointeur vers le joueur cree.
*/
Joueur * nouveauJoueur(){
int i;
Joueur * j = malloc(sizeof(Joueur));
j->nomJoueur[0]='\0';
for(i=0;i<TAILLE_MAX_GROUPE;i++){
j->groupe[i]=NULL;
}
return j;
}
/*!
* \fn void deleteJoueur(Joueur * j)
* \brief La fonction supprime un Joueur et libere l'espace alloue en memoire.
*
* \param Un pointeur vers le Joueur a supprimer.
*/
void deleteJoueur(Joueur * j){
free(j);
}
/*!
* \fn char * getNomJoueur(Joueur * j)
* \brief La fonction renvoie le pointeur vers la chaine de caractere contenant le nom du Joueur.
*
* \param Un pointeur vers le Joueur a tester.
* \return un pointeur vers la chaine de caracteres contenant le nom,
*/
char * getNomJoueur(Joueur * j){
return (j->nomJoueur);
}
/*!
* \fn void setNomJoueur(Joueur * j, char * nom)
* \brief La fonction change le nom du Joueur en parametre a la valeur d'entree.
*
* \param Un pointeur vers le Joueur a modifier.
*/
void setNomJoueur(Joueur * j, char * nom){
strncpy(j->nomJoueur,nom,TAILLE_NOMS-1);
j->nomJoueur[TAILLE_NOMS-1]='\0';
}
/*!
* \fn Personnage * getPersonnage(Joueur * j, int i)
* \brief La fonction renvoie le pointeur du personnage a l'indice i du groupe du Joueur en entree.
*
* \param Un pointeur vers le Joueur a tester, l'indice a tester dans le tableau groupe.
* \return Un pointeur vers le Personnage du Joueur a l'indice i dans le tableau groupe, NULL si l'indice n'est pas dans le tableau.
*/
Personnage * getPersonnage(Joueur * j, int i){
if(i<TAILLE_MAX_GROUPE-1){
return j->groupe[i];
}
return NULL;
}
/*!
* \fn int addPersonnage(Joueur * j, Personnage * p, int i)
* \brief La fonction stocke un Personnage a l'indice i du tableau groupe du Joueur en parrametre.
* Si le tableau est deja rempli a cet indice, la valeur precedente est effacee du tableau.
*
* \param Un pointeur vers le Joueur a modifier, l'indice du tableau groupe ou faire la modification, le Personnage a ajouter.
* \return 1 si le Personnage a ete correctement ajoute, 0 si l'indice n'est pas dans le tableau groupe.
*/
int addPersonnage(Joueur * j, Personnage * p, int i){
if(i<TAILLE_MAX_GROUPE){
j->groupe[i]=p;
return 1;
}
return 0;
}
/*!
* \fn int isInGroupe(Joueur * j, Personnage * p)
* \brief La fonction teste si le Personnage en parrametre est dans le groupe du Joueur.
*
* \param Un pointeur vers le Joueur et le personnage a tester.
* \return 1 si le Personnage est dans le groupe du joueur, 0 sinon.
*/
int isInGroupe(Joueur * j, Personnage * p){
int i;
for(i=0;i<TAILLE_MAX_GROUPE;i++){
if(j->groupe[i]==p){
return 1;
}
}
return 0;
}
/*!
* \fn getIndicePersonnage(Joueur * j, Personnage * p)
* \brief La fonction renvoie l'indice auquel est stocke le Personnage en parrametre dans le groupe du Joueur.
*
* \param Un pointeur vers le Joueur et le personnage a tester.
* \return La valeur de l'indice auquel le Personnage est stocke, -1 s'il n'est pas dans le groupe du Joueur.
*/
int getIndicePersonnage(Joueur * j, Personnage * p){
int i;
if(isInGroupe(j,p)){
for(i=0;i<TAILLE_MAX_GROUPE;i++){
if(j->groupe[i]==p){
return i;
}
}
}
return -1;
}
/*!
* \fn int removePersonnage(Joueur * j, Personnage * p)
* \brief La fonction retire le Personnage du groupe du Joueur.
* Si le Personnage n'est pas dans le groupe du Joueur, elle ne fait rien.
*
* \param Un pointeur vers le Joueur a modifier, le Personnage a retirer.
* \return 1 si le Personnage a ete retire, 0 si le personnage n'est pas dans le tableau groupe.
*/
int removePersonnage(Joueur * j, Personnage * p){
int i=getIndicePersonnage(j,p);
if(i>=0){
j->groupe[i]=NULL;
return 1;
}
return 0;
}
......@@ -9,16 +9,17 @@
#define JOUEUR_H
Joueur * nouveauJoueur();
int initJoueur(Joueur * j, char * nom);
void deleteJoueur(Joueur * j);
char getNomJoueur(Joueur * j);
char setNomJoueur(Joueur * j, char * nom);
char * getNomJoueur(Joueur * j);
void setNomJoueur(Joueur * j, char * nom);
Personnage * getPersonnage(Joueur * j, int i);
int addPersonnage(Joueur * j, Personnage * p);
int addPersonnage(Joueur * j, Personnage * p, int i);
int isInGroupe(Joueur * j, Personnage * p);
int removePersonnage(Joueur * j, Personnage * p);
int appartientJoueur(Joueur * j, Personnage * p);
// Des Fonctions sont a ajouter pour les versions suivantes pour la gestion des competences du Joueur
// et eventuellement pour sa sauvegarde.
#endif // JOUEUR_H
/*!
* \file joueurList.c
* \brief Fichier contenant le code des fonctions liees a la structure Partie.
* \brief Fichier contenant le code des fonctions liees aux structures NodeJoueur et ListJoueur.
*/
#include <stdio.h>
......
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