Skip to content
Snippets Groups Projects
Commit 03b3e8d4 authored by Montjoie Henri's avatar Montjoie Henri
Browse files

merge

parents 6759ff12 6586b556
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -384,7 +384,7 @@ char * obtenirRessourcePersonnage(int x, int y){
}
}
}
//recherche du Personnage sur la case pour le premier Joueur.
//recherche du Personnage sur la case pour le second Joueur.
nextJoueur(getListJoueur(partieGlobale));
for(i=0;i<TAILLE_MAX_GROUPE;i++){
if(get_x(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),i)))==x){
......@@ -396,14 +396,90 @@ char * obtenirRessourcePersonnage(int x, int y){
}
}
//Si aucun personnage trouvé.
setOnJoueur(getListJoueur(partieGlobale),actuel);
return NULL;
}
}
/*!
* \fn Personnage * trouverPersonnage(Case * c)
* \brief La fonction renvoie un pointeur vers le personnage présent sur la case en parrammetre.
*
* \param Les coordonnées de la Case à tester
* \return Un pointeur vers un personnage, NULL, s'il n'y a pas de personnage sur la case.
*/
Personnage * trouverPersonnage(Case * c){
int i;
Personnage * resultat;
resultat = NULL;
Joueur * actuel = NULL;
actuel = getCurrentJoueur(getListJoueur(partieGlobale));
if(!est_occupee(c)){
return resultat;
}
setOnFirstJoueur(getListJoueur(partieGlobale));
for(i=0;i<TAILLE_MAX_GROUPE;i++){
if(c==getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),i))){
resultat = getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),i);
setOnJoueur(getListJoueur(partieGlobale),actuel);
return resultat;
}
}
nextJoueur(getListJoueur(partieGlobale));
for(i=0;i<TAILLE_MAX_GROUPE;i++){
if(c==getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),i))){
resultat = getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),i);
setOnJoueur(getListJoueur(partieGlobale),actuel);
return resultat;
}
}
setOnJoueur(getListJoueur(partieGlobale),actuel);
return NULL;
}
/*!
* \fn char * obtenirNomClassePersonnage(int numero)
* \brief La fonction renvoie le nom de la classe du Personnage en parrametre.
* Le numero correspond au placement du personnage tel qu'il est définit dans la sdl et va de 1 à 6 :
* Exemples : Le Personnage 0 du joueur 2 dans le moteur correspond au numero 4 pour la sdl.
* Le Personnage 1 du joueur 1 dans le moteur correspond au numero 2 pour la sdl.
*
* \param Le numero du personnage pour la SDL.
* \return Un char * vers le nom de la classe du Personnage.
*/
char * obtenirNomClassePersonnage(int numero){
Joueur * actuel = NULL;
actuel = getCurrentJoueur(getListJoueur(partieGlobale));
char * nomClasse;
nomClasse = malloc(TAILLE_NOMS*sizeof(char));
if ((numero>0)&&(numero<=3)){
setOnFirstJoueur(getListJoueur(partieGlobale));
nomClasse = getNomClasse(getClasse(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-1)));
setOnJoueur(getListJoueur(partieGlobale),actuel);
return nomClasse;
}
else if ((numero>3)&&(numero<=6)){
setOnFirstJoueur(getListJoueur(partieGlobale));
nextJoueur(getListJoueur(partieGlobale));
nomClasse = getNomClasse(getClasse(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-4)));
setOnJoueur(getListJoueur(partieGlobale),actuel);
return nomClasse;
}
}
int obtenirPVPersonnage(int numero);
int obtenirPVMaxPersonnage(int numero);
int obtenirManaPersonnage(int numero);
int obtenirManaMaxPersonnage(int numero);
int obtenirPDPersonnage(int numero);
int obtenirPDMaxPersonnage(int numero);
char ** obtenirNomsAttaquesPersonnage(int numero);
// Je met ici mes tests réalisés dans le main pour éviter de les réécrire si jamais il y a un problème.
// Si vous voulez tester aussi, à recopier dans le main avant l'appel à initJeu().
void testControlleurConsole(){
int i,j;
int i,j,n;
EtatsJeu state = SAISIE_JOUEURS;
extern Partie * partieGlobale;
extern Game_Package packGlobal;
......@@ -437,7 +513,20 @@ void testControlleurConsole(){
for(i=0;i<LARG_MAX_CARTE;i++){
for(j=0;j<HAUT_MAX_CARTE;j++){
printf("%s : Position : %d/%d\n",obtenirRessourcePersonnage(i,j),i,j);
if(personnagePresent(i,j)){
printf("Position : %d/%d\n%s\n",i,j,obtenirRessourcePersonnage(i,j));
/* Attention pour ce qui suit: l'acces aux informations sera moins "compliqué" hors des tests
car la SDL "connait" le numero quelle a attribuée aux personnages.
Ici, c'était une manière de simuler l'acces aux données mais depuis le moteur.
*/
if((appartientJoueur(trouverPersonnage(getCase(getCarte(partieGlobale),i,j)),partieGlobale))==(getListJoueur(partieGlobale)->firstNodeJoueur->j)){
n=1+getIndicePersonnage((getListJoueur(partieGlobale)->firstNodeJoueur->j),trouverPersonnage(getCase(getCarte(partieGlobale),i,j)));
}
else{
n=4+getIndicePersonnage((getListJoueur(partieGlobale)->lastNodeJoueur->j),trouverPersonnage(getCase(getCarte(partieGlobale),i,j)));
}
printf("%s\n", obtenirNomClassePersonnage(n));
}
}
}
......
......@@ -37,6 +37,17 @@ char * ObtenirRessourceTerrain(int x, int y);
int personnagePresent(int x, int y);
char * obtenirRessourcePersonnage(int x, int y);
Personnage * trouverPersonnage(Case * c);
char * obtenirNomClassePersonnage(int numero);
int obtenirPVPersonnage(int numero);
int obtenirPVMaxPersonnage(int numero);
int obtenirManaPersonnage(int numero);
int obtenirManaMaxPersonnage(int numero);
int obtenirPDPersonnage(int numero);
int obtenirPDMaxPersonnage(int numero);
char ** obtenirNomsAttaquesPersonnage(int numero);
void testControlleurConsole();
#endif // CONTROLEUR_H
......@@ -15,6 +15,7 @@ char * getNomJoueur(Joueur * j);
void setNomJoueur(Joueur * j, char * nom);
Personnage * getPersonnage(Joueur * j, int i);
int getIndicePersonnage(Joueur * j, Personnage * p);
int addPersonnage(Joueur * j, Personnage * p, int i);
int isInGroupe(Joueur * j, Personnage * p);
int removePersonnage(Joueur * j, Personnage * p);
......
......@@ -10,6 +10,7 @@
#include "joueurList.h"
#include "joueur.h"
#include "case.h"
#include "personnage.h"
/*!
* \fn Partie * initPartie()
......
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