Skip to content
Snippets Groups Projects
Commit 68c53b41 authored by Jin Zijun's avatar Jin Zijun
Browse files

creerjoueur

parent 1d3ba6e2
No related branches found
No related tags found
No related merge requests found
Pipeline #
...@@ -13,11 +13,11 @@ ...@@ -13,11 +13,11 @@
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
#define MAX_NAME_SIZE 16 #define MAX_NAME_SIZE 20
#define MAX_PATH_SIZE ( MAX_NAME_SIZE + 48 ) #define MAX_PATH_SIZE ( MAX_NAME_SIZE + 48 )
#define MAX_PLAYERS 6 #define MAX_PLAYERS 6
#define MAX_WORMS_PER_PLAYER 5 #define MAX_DICES_PER_PLAYER 5
#define MAX_WORMS ( MAX_PLAYERS * MAX_WORMS_PER_PLAYER )
#define NB_DICES 30 #define NB_DICES 30
......
#include <SDL/common.h>
#include <SDL/creerJoueur.h>
#define DIR_SAVE_JOUEURS "../project/resources/Joueur/"
#define EXTENSION ".bin"
int menu__creerjoueur(SDL_Rect positionFond,SDL_Surface *ecran)
{
int i;
int save=0;
SDL_Event event;
Create_menu creermenu;
FILE* joueur=NULL;
char filename[MAX_PATH_SIZE];
char* joueurs[MAX_PLAYERS];
char joueurname[MAX_NAME_SIZE];
init_imagescreermenu(&creermenu);
init_creermenu(&creermenu, positionFond, ecran);
while( SDL_Button_IsClicked( creermenu.buttons[backmenu] ) == false )
{
update_creermenu(&creermenu, &event);
if((event.key.keysym.sym==SDLK_RETURN)&&SDL_InputBox_IsActiv( creermenu.input_box[0]))
{
save=0;
sprintf(filename,"%s%s%s",DIR_SAVE_JOUEURS,SDL_InputBox_GetText(&(creermenu.input_box[0])),EXTENSION);
joueur=fopen(filename,"rb");
if(joueur==NULL)
{
SDL_RenderPresent( ecran );
while( event.button.button != SDL_BUTTON_LEFT)
{
SDL_WaitEvent( &event );
SDL_RenderPresent( ecran );
}
SDL_BlitSurface(creermenu.surf[0], NULL, ecran, &positionFond);
}
else
{
readteamsfiles(joueur,joueurname,joueurs);
SDL_InputBox_SetText( &(creermenu.input_box[0]), joueurs[0] );
SDL_InputBox_SetText( &(creermenu.input_box[1]), joueurs[1] );
SDL_InputBox_SetText( &(creermenu.input_box[2]), joueurs[2] );
SDL_InputBox_SetText( &(creermenu.input_box[3]), joueurs[3] );
SDL_InputBox_SetText( &(creermenu.input_box[4]), joueurs[4] );
SDL_InputBox_SetText( &(creermenu.input_box[5]), joueurs[5] );
save=1;
}
fclose(joueur);
}
/* on veut sauvegarder les modifications fait sur l'équipe */
if((SDL_Button_IsClicked( ( creermenu.buttons[savejoueur] )) == true)&& (save==1))
{
createjoueurfile(SDL_InputBox_GetText( &( creermenu.input_box[0]) ),
SDL_InputBox_GetText( &( creermenu.input_box[1]) ),
SDL_InputBox_GetText( &( creermenu.input_box[2]) ),
SDL_InputBox_GetText( &( creermenu.input_box[3]) ),
SDL_InputBox_GetText( &( creermenu.input_box[4]) ),
SDL_InputBox_GetText( &( creermenu.input_box[5]) ));
}
display_creermenu(&creermenu,ecran);
}
for( i = 0 ; i < NB_IMAGES_CREATE ; i++ )
SDL_FreeSurface( creermenu.surf[ i ] );
TTF_Quit();
return 0;
}
void init_imagescreermenu(Create_menu* creermenu)
{
SDL_Color color={0,0,0};
creermenu->couleurNoire =color;
creermenu->font = TTF_OpenFont("../project/resources/fonts/angelina.ttf", 30);
creermenu->surf[ 0 ] = SDL_LoadBMP("../project/resources/images/map_creerJoueur.bmp");
creermenu->surf[ 1 ] = SDL_LoadBMP( "../project/resources/images/retour.bmp" );
creermenu->surf[ 2 ] = SDL_LoadBMP( "../project/resources/images/inputbox.bmp");
creermenu->surf[ 3 ] = SDL_LoadBMP( "../project/resources/images/save.bmp");
}
void init_creermenu(Create_menu* creermenu,SDL_Rect positionFond,SDL_Surface *ecran)
{
creermenu->positionErreur.x= 200;
creermenu->positionErreur.y=300;
SDL_BlitSurface(creermenu->surf[ 0 ], NULL, ecran, &positionFond);
SDL_Button_Initialize( &(creermenu->buttons[backmenu]), 100, 580, creermenu->surf[ 1 ]);
SDL_Button_Initialize( &(creermenu->buttons[savejoueur]), 600, 580, creermenu->surf[ 3 ] );
SDL_InputBox_Initialize( &(creermenu->input_box[0]), 120, 170, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire );
SDL_InputBox_Initialize( &(creermenu->input_box[1]), 120, 250, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire );
SDL_InputBox_Initialize( &(creermenu->input_box[2]), 120, 330, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire );
SDL_InputBox_Initialize( &(creermenu->input_box[3]), 120, 410, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire );
SDL_InputBox_Initialize( &(creermenu->input_box[4]), 120, 490, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire );
SDL_InputBox_Initialize( &(creermenu->input_box[5]), 120, 570, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire );
}
void update_creermenu(Create_menu* creermenu, SDL_Event* event)
{
int i;
SDL_PollEvent( event );
for(i=0;i<NB_BUTTONS_CREATE;i++)
{
SDL_Button_Update( &(creermenu->buttons[i]), *event );
}
for(i=0;i<NB_INPUT_BOXES_CREATE;i++)
{
SDL_InputBox_Update( &(creermenu->input_box[i]), *event );
}
}
void display_creermenu(Create_menu* creermenu,SDL_Surface *ecran)
{
int i;
for(i=0;i<NB_BUTTONS_CREATE;i++)
{
SDL_Button_Display( creermenu->buttons[i], ecran );
}
for(i=0;i<NB_INPUT_BOXES_CREATE;i++)
{
SDL_InputBox_Display(creermenu->input_box[i], ecran);
}
SDL_RenderPresent( ecran );
}
void readteamsfiles(FILE* ptr_file, char joueurname[MAX_NAME_SIZE], char* joueurs[MAX_PLAYERS])
{
int i;
int buf;
char temp[MAX_NAME_SIZE+1];
fread(&buf,sizeof(int),1,ptr_file);
fread(temp,sizeof(char),buf,ptr_file);
strcpy(joueurname,temp);
if(joueurname==NULL)
{
exit(EXIT_FAILURE);
}
for(i=0;i<MAX_PLAYERS+1;i++)
{
fread(&buf,sizeof(int),1,ptr_file);
joueurs[i]=(char*) calloc(buf,sizeof(char));
fread(temp,sizeof(char),buf,ptr_file);
strcpy(joueurs[i],temp);
}
}
void createjoueurfile(char* joueur1name, char* joueur2name, char* joueur3name, char* joueur4name, char* joueur5name,char* joueur6name)
{
FILE* ptr_file1 = NULL;
char *filename;
int buf;
filename=(char*)calloc(sizeof(char), (strlen(joueur1name)+strlen(DIR_SAVE_JOUEURS)+strlen(EXTENSION)+1));
strcpy(filename, DIR_SAVE_JOUEURS);
strcat(filename, joueur1name);
strcat(filename, EXTENSION);
ptr_file1 = fopen(filename, "wb");
if ((ptr_file1 != NULL))
{
/* On peut lire et écrire dans le fichier*/
buf=strlen(joueur1name)+1;
fwrite(&buf,sizeof(int),1,ptr_file1);
fwrite(joueur1name,buf,sizeof(char),ptr_file1);
buf=strlen(joueur2name)+1;
fwrite(&buf,sizeof(int),1,ptr_file1);
fwrite(joueur2name,buf,sizeof(char),ptr_file1);
buf=strlen(joueur3name)+1;
fwrite(&buf,sizeof(int),1,ptr_file1);
fwrite(joueur3name,buf,sizeof(char),ptr_file1);
buf=strlen(joueur4name)+1;
fwrite(&buf,sizeof(int),1,ptr_file1);
fwrite(joueur4name,buf,sizeof(char),ptr_file1);
buf=strlen(joueur5name)+1;
fwrite(&buf,sizeof(int),1,ptr_file1);
fwrite(joueur5name,buf,sizeof(char),ptr_file1);
buf=strlen(joueur6name)+1;
fwrite(&buf,sizeof(int),1,ptr_file1);
fwrite(joueur6name,buf,sizeof(char),ptr_file1);
fclose(ptr_file1);
}
free(filename);
}
#include <SDL/common.h>
#include <SDL/Button.h>
#include <SDL/InputBox.h>
#include <stdlib.h>
#include <stdio.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
#define DIR_SAVE_JOUEURS "../project/resources/Joueur/"
#define EXTENSION ".bin"
#define FILES_JOUEURS_NAMES "../project/resources/Joueur/@joueurfile.bin"
#define NB_BUTTONS_CREATE 2
#define NB_INPUT_BOXES_CREATE 6
#define NB_IMAGES_CREATE 4
typedef struct Create_menu
{
SDL_Button buttons[NB_BUTTONS_CREATE];
SDL_InputBox input_box[NB_INPUT_BOXES_CREATE];
SDL_Surface *surf[ NB_IMAGES_CREATE ];
SDL_Color couleurNoire;
TTF_Font *font;
SDL_Rect positionErreur;
}Create_menu;
enum inputscreate{backmenu,savejoueur};
int menu_creerjoueur(SDL_Rect positionFond,SDL_Surface *ecran);
void init_imagescreermenu(Create_menu* creermenu);
void init_creermenu(Create_menu* creermenu,SDL_Rect positionFond,SDL_Surface *ecran);
void update_creermenu(Create_menu* creermenu, SDL_Event* event);
void display_creermenu(Create_menu* creermenu,SDL_Surface *ecran);
void createjoueurfile(char* joueur1name, char* joueur2name, char* joueur3name, char* joueur4name, char* joueur5name,char* joueur6name);
void readteamsfiles(FILE* ptr_file, char joueurname[MAX_NAME_SIZE], char* joueurs[MAX_PLAYERS]);
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