diff --git a/src/joueur.c b/src/joueur.c
new file mode 100644
index 0000000000000000000000000000000000000000..58c5f362254ebc2f145207d8780d6f68050a4812
--- /dev/null
+++ b/src/joueur.c
@@ -0,0 +1,141 @@
+/*!
+* \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;
+}
diff --git a/src/joueur.h b/src/joueur.h
index 6cf909b190b40c4fd4a6a8774af5333f18bc266c..478e65c3229bef5d5d8a1125939de0b388326bab 100644
--- a/src/joueur.h
+++ b/src/joueur.h
@@ -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
diff --git a/src/joueurList.c b/src/joueurList.c
index 3b9a34fa888f4d2927c01da50a2a47f3c2f9cf54..f4090ae5b3ad12d45132b1e68c04adaa4db528e6 100644
--- a/src/joueurList.c
+++ b/src/joueurList.c
@@ -1,6 +1,6 @@
 /*!
 * \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>