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

PB NOUVELLE STRUCTURE CARTE la fonction de creation d'un personnage est appelee

parent 03a5b3ec
No related branches found
No related tags found
No related merge requests found
Pipeline #
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
</Target> </Target>
</Build> </Build>
<Compiler> <Compiler>
<Add option="-Wall" />
<Add directory="./../Libs/libroxml-2.3.0/src" /> <Add directory="./../Libs/libroxml-2.3.0/src" />
<Add directory="./../src" /> <Add directory="./../src" />
<Add directory="./../Libs/SDL-1.2.15/include" /> <Add directory="./../Libs/SDL-1.2.15/include" />
......
...@@ -6,6 +6,38 @@ ...@@ -6,6 +6,38 @@
#include "structures.h" #include "structures.h"
#include "controleur.h" #include "controleur.h"
char* castIntToChar(int n)
{
switch(n)
{
case 0:
return "0";
break;
case 1:
return "1";
break;
case 2:
return "2";
break;
case 3:
return "3";
break;
case 4:
return "4";
break;
case 5:
return "5";
break;
case 6:
return "6";
break;
default:
return "-1";
break;
}
}
char* afficherListe(char** nomsClasses, char** skinsClasses, int nbChoix, TTF_Font* police,SDL_Color couleurTexte) char* afficherListe(char** nomsClasses, char** skinsClasses, int nbChoix, TTF_Font* police,SDL_Color couleurTexte)
{ {
int i, quitter; int i, quitter;
...@@ -217,30 +249,38 @@ int SDL_bis() ...@@ -217,30 +249,38 @@ int SDL_bis()
SDL_BlitSurface(texte3,NULL,ecran,&pos_texte3_bis); SDL_BlitSurface(texte3,NULL,ecran,&pos_texte3_bis);
SDL_Flip(ecran); SDL_Flip(ecran);
SDL_Surface* textes[6]; SDL_Surface textes[6];
SDL_Rect posTextes[6]; SDL_Rect posTextes[6];
police=TTF_OpenFont("../resources/fonts/arial.ttf",26); police=TTF_OpenFont("../resources/fonts/arial.ttf",26);
/*
char src[50], dest[50];
for(i=0;i<6;i++) for(i=0;i<6;i++)
{ {
textes[i]= TTF_RenderText_Shaded(police, test, couleurBlanche,couleurNoire); strcpy(dest, "personnage ");
strcpy(src, castIntToChar(i+1));
textes[i]= *TTF_RenderText_Shaded(police, strcat(dest, src), couleurBlanche,couleurNoire);
} }
for(i=0;i<3;i++) for(i=0;i<3;i++)
{ {
posTextes[i].x=ecran->w/4-textes[i]->w/2; posTextes[i].x=ecran->w/4-textes[i].w/2;
posTextes[i].y=(i+1)*ecran->h; posTextes[i].y=(i+1)*ecran->h/5;
SDL_BlitSurface(textes[i],NULL,ecran,&(posTextes[i])); SDL_BlitSurface(&textes[i],NULL,ecran,&(posTextes[i]));
} }
for(i=3;i<6;i++) for(i=3;i<6;i++)
{ {
posTextes[i].x=(3*ecran->w)/4-textes[i]->w/2; posTextes[i].x=(3*ecran->w)/4-textes[i].w/2;
posTextes[i].y=posTextes[i-3].y; posTextes[i].y=posTextes[i-3].y;
SDL_BlitSurface(textes[i],NULL,ecran,&posTextes[i]); SDL_BlitSurface(&textes[i],NULL,ecran,&posTextes[i]);
} }
SDL_Flip(ecran); SDL_Flip(ecran);
printf("%d",etat);*/
int j,p;
j=0;
p=0;
char *classeChoisie;
while(etat==CONFIGURATION) while(etat==CONFIGURATION)
{ {
SDL_WaitEvent(&event); SDL_WaitEvent(&event);
...@@ -250,14 +290,32 @@ int SDL_bis() ...@@ -250,14 +290,32 @@ int SDL_bis()
etat=FERMER; etat=FERMER;
break; break;
case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONDOWN:
afficherListe(obtenirNomsClasses(), obtenirSkinsClasses(),nbClasses(), TTF_OpenFont("../resources/fonts/arial.ttf",26),couleurBlanche); if(event.button.x>posTextes[0].x&&event.button.x<posTextes[0].x+textes[0].w)
j=1;
if(event.button.x>posTextes[3].x&&event.button.x<posTextes[3].x+textes[3].w)
j=2;
for(i=0;i<3;i++){
if(event.button.y>posTextes[i].y&&event.button.y<posTextes[i].y+textes[i].h)
p=i+1;
}
if(j!=0&&p!=0){
classeChoisie=afficherListe(obtenirNomsClasses(), obtenirSkinsClasses(), nbClasses(), police, couleurBlanche);
ajouterPersonnage(classeChoisie, p, j);
ecran = SDL_SetVideoMode(LARGEUR_CARTE*(LARGEUR_CASE+1), HAUTEUR_CARTE*(HAUTEUR_CASE+2), 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
}
j=0;
p=0;
break; break;
default: default:
break; break;
} }
/*for(i=0;i<6;i++){ for(i=0;i<6;i++){
SDL_BlitSurface(textes[i],NULL,ecran,&(posTextes[i])); SDL_BlitSurface(&textes[i],NULL,ecran,&(posTextes[i]));
}*/ }
SDL_BlitSurface(texte,NULL,ecran,&pos_texte);
SDL_BlitSurface(texte2,NULL,ecran,&pos_texte2);
SDL_BlitSurface(texte3,NULL,ecran,&pos_texte3);
SDL_BlitSurface(texte3,NULL,ecran,&pos_texte3_bis);
SDL_Flip(ecran); SDL_Flip(ecran);
} }
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "classe.h" #include "classe.h"
#include "gamePackage.h" #include "gamePackage.h"
#include "roxml.h" #include "roxml.h"
#include "SDL.h"
Partie * partieGlobale; Partie * partieGlobale;
Game_Package packGlobal; Game_Package packGlobal;
...@@ -188,6 +189,26 @@ char ** obtenirDescriptionCarte(){ ...@@ -188,6 +189,26 @@ char ** obtenirDescriptionCarte(){
free(tab); free(tab);
} }
/*!
* \fn Case * trouverCase(Carte c, int x, int y)
* \brief La fonction retourne un pointeur vers la case de coordonnées x,y
*
* \param les coordonnées x et y d'une case (pas en pixels mais bien en colonne et ligne), ainsi que la carte utilisée
* \return un pointeur vers cette case
*/
Case * trouverCase(Carte c, int x, int y)
{
if((x<0)||(x>=LARGEUR_CARTE)){
return NULL;
}
else if((y<0)||(y>=HAUTEUR_CARTE)){
return NULL;
}
else{
return &c[(y*LARGEUR_CARTE)+x];
}
}
/*! /*!
* \fn int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur) * \fn int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur)
* \brief La fonction ajoute un personnage au tableau de personnages d'un Joueur à l'indice numTab(compris entre 0 et TAILLE_MAX_GROUPE). * \brief La fonction ajoute un personnage au tableau de personnages d'un Joueur à l'indice numTab(compris entre 0 et TAILLE_MAX_GROUPE).
...@@ -201,14 +222,15 @@ int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur){ ...@@ -201,14 +222,15 @@ int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur){
int i; int i;
i=0; i=0;
//Recherche de la classe dans le Package //Recherche de la classe dans le Package
while((strcmp(nomClasse,(packGlobal.Classes_Package[i].nom))!=0)&&(i<=nbClasses())){ while(strcmp(nomClasse,getNomClasse(&packGlobal.Classes_Package[i]))!=0&&i<nbClasses()){
i++; i++;
} }
if(i>nbClasses()){ if(i>nbClasses()){
return 0; return 0;
} }
//Création du personnage //Création du personnage
Personnage * p = default_personnage(i,packGlobal); Personnage * p = default_personnage(i,packGlobal,trouverCase(packGlobal.Cartes_Package[0],0,0));
//Ajout du Personnage à l'équipe du Joueur //Ajout du Personnage à l'équipe du Joueur
switch (numJoueur){ switch (numJoueur){
......
...@@ -22,6 +22,8 @@ char ** obtenirNomsCartes(); ...@@ -22,6 +22,8 @@ char ** obtenirNomsCartes();
char ** obtenirDescriptionCarte(); char ** obtenirDescriptionCarte();
void freeCartes(char **); void freeCartes(char **);
Case * trouverCase(Carte c, int x, int y);
void ajouterPersonnage(char * nomClasse, int numTab, int numJoueur); void ajouterPersonnage(char * nomClasse, int numTab, int numJoueur);
......
...@@ -69,25 +69,7 @@ int y_case_cliquee(int x_pixel, int y_pixel) ...@@ -69,25 +69,7 @@ int y_case_cliquee(int x_pixel, int y_pixel)
} }
return y_case; return y_case;
} }
/*!
* \fn Case * trouverCase(Carte c, int x, int y)
* \brief La fonction retourne un pointeur vers la case de coordonnées x,y
*
* \param les coordonnées x et y d'une case (pas en pixels mais bien en colonne et ligne), ainsi que la carte utilisée
* \return un pointeur vers cette case
*/
Case * trouverCase(Carte c, int x, int y)
{
if((x<0)||(x>=LARGEUR_CARTE)){
return NULL;
}
else if((y<0)||(y>=HAUTEUR_CARTE)){
return NULL;
}
else{
return &c[(y*LARGEUR_CARTE)+x];
}
}
/*! /*!
* \fn void persosuivant() * \fn void persosuivant()
* \brief La fonction permet de selectionner le personnage suivant * \brief La fonction permet de selectionner le personnage suivant
......
...@@ -12,7 +12,7 @@ int y_case_cliquee(int x_pixel, int y_pixel); ...@@ -12,7 +12,7 @@ int y_case_cliquee(int x_pixel, int y_pixel);
int x_case_cliquee(int x_pixel, int y_pixel); int x_case_cliquee(int x_pixel, int y_pixel);
Case * trouverCase(Carte c, int x, int y);
void deplacement_personnage(int x, int y); void deplacement_personnage(int x, int y);
......
...@@ -56,10 +56,10 @@ Personnage* set_personnage(Personnage *perso, Classe *c, Case *casedepart) ...@@ -56,10 +56,10 @@ Personnage* set_personnage(Personnage *perso, Classe *c, Case *casedepart)
* \param Le numro de la dfination du personnage dans le fichier XML, un game_package. * \param Le numro de la dfination du personnage dans le fichier XML, un game_package.
* \return Un personnage pret a l'action. * \return Un personnage pret a l'action.
*/ */
Personnage* default_personnage(int numero, Game_Package Pack) Personnage* default_personnage(int numero, Game_Package Pack,Case *casedepart)
{ {
Personnage* Perso = init_personnage(); Personnage* Perso = init_personnage();
set_personnage(Perso, &Pack.Classes_Package[numero], NULL); set_personnage(Perso, &Pack.Classes_Package[numero], casedepart);
return Perso; return Perso;
} }
......
...@@ -10,7 +10,7 @@ Personnage* set_personnage(Personnage *perso, Classe *c, Case *casedepart); ...@@ -10,7 +10,7 @@ Personnage* set_personnage(Personnage *perso, Classe *c, Case *casedepart);
Personnage* init_personnage(); Personnage* init_personnage();
Personnage* default_personnage(int numero, Game_Package Pack); Personnage* default_personnage(int numero, Game_Package Pack, Case *casedepart);
void freePersonnage(Personnage * p); void freePersonnage(Personnage * p);
......
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