test pour menu
This commit is contained in:
@@ -10,8 +10,8 @@ int getMaxSize (dis display_user);
|
|||||||
void displayImage (SDL_Renderer *renderer, SDL_Texture *texture, vect pos,
|
void displayImage (SDL_Renderer *renderer, SDL_Texture *texture, vect pos,
|
||||||
int size);
|
int size);
|
||||||
void initSDL (dis *display_user);
|
void initSDL (dis *display_user);
|
||||||
void screenDisplayGameSDL (char **tab, dis *display_user);
|
|
||||||
void displayTextSDL(dis *display_user,char *text, vect coor, vect size, int font_size);
|
void displayTextSDL(dis *display_user,char *text, vect coor, vect size, int font_size);
|
||||||
|
void screenDisplayGameSDL (char **tab, dis *display_user, vect *player_pos, int fov);
|
||||||
|
|
||||||
|
|
||||||
#endif // !DISPLAY_H
|
#endif // !DISPLAY_H
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
#define PLAYER 5
|
#define PLAYER 5
|
||||||
#define PLAYER_ON_TARGET 6
|
#define PLAYER_ON_TARGET 6
|
||||||
#define BUTTON 7
|
#define BUTTON 7
|
||||||
|
#define PLAYER_ON_BUTTON 8
|
||||||
|
|
||||||
typedef struct Vecteur
|
typedef struct Vecteur
|
||||||
{
|
{
|
||||||
@@ -49,5 +50,6 @@ vect plusVect (vect one, vect two);
|
|||||||
void inGameLoop (char **tab2d, int N, vect *playerPos,
|
void inGameLoop (char **tab2d, int N, vect *playerPos,
|
||||||
vect *targets, int nbr_targets, dis *display_user, score *score_user);
|
vect *targets, int nbr_targets, dis *display_user, score *score_user);
|
||||||
char *timeToText(time_t time);
|
char *timeToText(time_t time);
|
||||||
|
void inMenuLoop(char **menu, int x, int y, vect *playerPos, vect *buttons, dis *display_user);
|
||||||
|
|
||||||
#endif // FONCTION_H
|
#endif // FONCTION_H
|
||||||
|
|||||||
@@ -4,5 +4,5 @@
|
|||||||
vect *fileToTab2D (const char *name_file, char **tab,
|
vect *fileToTab2D (const char *name_file, char **tab,
|
||||||
const unsigned N, vect *player, int *nbr_targets);
|
const unsigned N, vect *player, int *nbr_targets);
|
||||||
int countCustomMaps(char *name_directory);
|
int countCustomMaps(char *name_directory);
|
||||||
char ** generatorMenu(char *name_directory, int *x , int *y);
|
char ** generatorMenu(char *name_directory, int *x , int *y, vect *pos_player);
|
||||||
#endif // !READ_H
|
#endif // !READ_H
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#####
|
###################
|
||||||
# #
|
##### ###########
|
||||||
#C #
|
#####C ###########
|
||||||
### C##
|
##### C###########
|
||||||
# C C #
|
### C C ##########
|
||||||
### # ## # ######
|
### # ## ##########
|
||||||
# # ## ##### II#
|
# # ## ##### II#
|
||||||
# C C II#
|
# C C II#
|
||||||
##### ### #P## II#
|
##### ### #P## II#
|
||||||
# #########
|
##### #########
|
||||||
#######
|
###################
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
void screenDisplay (char **tab, int x ,int y )
|
void screenDisplay (char **tab, int x ,int y )
|
||||||
{
|
{
|
||||||
// puts("0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ");
|
// puts("0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ");
|
||||||
char element[7] = { '#', '_', 'S', '.', '*', '@', '+' };
|
char element[9] = { '#', '_', 'S', '.', '*', '@', '+' , 'o', 'O'};
|
||||||
for (int i = 0; i < x; ++i)
|
for (int i = 0; i < x; ++i)
|
||||||
{
|
{
|
||||||
for (int j = 0; j < y; ++j)
|
for (int j = 0; j < y; ++j)
|
||||||
@@ -41,23 +41,41 @@ void screenDisplay (char **tab, int x ,int y )
|
|||||||
* \param tab Le tableau 2d de la zone de jeu.
|
* \param tab Le tableau 2d de la zone de jeu.
|
||||||
* \param display_user La structure qui possede tous ce qu'il faut pour
|
* \param display_user La structure qui possede tous ce qu'il faut pour
|
||||||
* l'affichage SDL
|
* l'affichage SDL
|
||||||
|
* \param player_pos la position du joueur
|
||||||
|
* \param fov Le fov de la vision du joueur, -1 si desactiver.
|
||||||
* \return Void
|
* \return Void
|
||||||
*/
|
*/
|
||||||
void screenDisplayGameSDL (char **tab, dis *display_user)
|
void screenDisplayGameSDL (char **tab, dis *display_user, vect *player_pos, int fov)
|
||||||
{
|
{
|
||||||
unsigned int display_game
|
unsigned int display_game
|
||||||
= display_user->size_window - display_user->size_menu;
|
= display_user->size_window - display_user->size_menu;
|
||||||
int size = display_game / display_user->size_box;
|
int size = display_game / display_user->size_box;
|
||||||
unsigned int marge = display_user->size_menu / 2;
|
unsigned int marge = display_user->size_menu / 2;
|
||||||
unsigned int i, j;
|
unsigned int i, j, x = 0, y = 0;
|
||||||
|
int start_i = 0, start_j = 0;
|
||||||
|
unsigned int limit_i = display_user->size_box, limit_j = display_user->size_box;
|
||||||
|
if (fov >= 0 )
|
||||||
|
{
|
||||||
|
start_i = player_pos->y - fov+1;
|
||||||
|
if(start_i < 0) start_i = 0;
|
||||||
|
start_j = player_pos->x - fov +1 ;
|
||||||
|
if(start_j < 0) start_j = 0;
|
||||||
|
limit_i = player_pos->y + fov;
|
||||||
|
if(limit_i > display_user->size_box) limit_i = display_user->size_box;
|
||||||
|
limit_j = player_pos->x + fov;
|
||||||
|
if(limit_j > display_user->size_box) limit_j = display_user->size_box;
|
||||||
|
size = display_game / (fov*2 - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SDL_Surface *img;
|
SDL_Surface *img;
|
||||||
SDL_Texture *texture;
|
SDL_Texture *texture;
|
||||||
for (i = 0; i < display_user->size_box; ++i)
|
for (i = start_i; i < limit_i; ++i)
|
||||||
{
|
{
|
||||||
for (j = 0; j < display_user->size_box; ++j)
|
for (j = start_j; j < limit_j; ++j)
|
||||||
{
|
{
|
||||||
vect pos = { i * size + marge, j * size };
|
vect pos = { x * size + marge, y * size};
|
||||||
switch (tab[j][i])
|
switch (tab[j][i])
|
||||||
{
|
{
|
||||||
case EMPTY:
|
case EMPTY:
|
||||||
@@ -87,7 +105,10 @@ void screenDisplayGameSDL (char **tab, dis *display_user)
|
|||||||
displayImage (display_user->renderer, texture, pos, size);
|
displayImage (display_user->renderer, texture, pos, size);
|
||||||
SDL_FreeSurface (img);
|
SDL_FreeSurface (img);
|
||||||
SDL_DestroyTexture (texture);
|
SDL_DestroyTexture (texture);
|
||||||
|
y++;
|
||||||
}
|
}
|
||||||
|
y = 0;
|
||||||
|
x++;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderPresent (display_user->renderer);
|
SDL_RenderPresent (display_user->renderer);
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ void inGameLoop (char **tab2d, int N, vect *playerPos, vect *targets,
|
|||||||
}
|
}
|
||||||
move (tab2d, playerPos, direction, score_user);
|
move (tab2d, playerPos, direction, score_user);
|
||||||
|
|
||||||
screenDisplayGameSDL (tab2d, display_user);
|
screenDisplayGameSDL (tab2d, display_user, playerPos, -1);
|
||||||
char nbr_p[20];
|
char nbr_p[20];
|
||||||
snprintf (nbr_p, 20, "MP : %d", score_user->move_player);
|
snprintf (nbr_p, 20, "MP : %d", score_user->move_player);
|
||||||
char nbr_b[20];
|
char nbr_b[20];
|
||||||
@@ -326,7 +326,6 @@ void inGameLoop (char **tab2d, int N, vect *playerPos, vect *targets,
|
|||||||
finish = true;
|
finish = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SDL_PollEvent (&event);
|
|
||||||
}
|
}
|
||||||
current_time = time (NULL);
|
current_time = time (NULL);
|
||||||
if (current_time > delay)
|
if (current_time > delay)
|
||||||
@@ -341,6 +340,7 @@ void inGameLoop (char **tab2d, int N, vect *playerPos, vect *targets,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Cette fonction verrifie si la partie est gagnante.
|
* \brief Cette fonction verrifie si la partie est gagnante.
|
||||||
* \param tab2d Le tableau 2D du jeu.
|
* \param tab2d Le tableau 2D du jeu.
|
||||||
|
|||||||
@@ -10,9 +10,10 @@
|
|||||||
#include <SDL2/SDL_image.h>
|
#include <SDL2/SDL_image.h>
|
||||||
#include <SDL2/SDL_render.h>
|
#include <SDL2/SDL_render.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#define SIZE_PLAY 19
|
#define SIZE_PLAY 20
|
||||||
#define SIZE_MENU 200;
|
#define SIZE_MENU 200
|
||||||
|
|
||||||
int main ()
|
int main ()
|
||||||
{
|
{
|
||||||
@@ -31,12 +32,14 @@ int main ()
|
|||||||
score score_user = {0, 0, 0,0};
|
score score_user = {0, 0, 0,0};
|
||||||
|
|
||||||
int x,y;
|
int x,y;
|
||||||
char**menu = generatorMenu("maps", &x, &y);
|
vect *pos = malloc(sizeof(vect));
|
||||||
|
char**menu = generatorMenu("maps", &x, &y, pos);
|
||||||
screenDisplay(menu, x, y);
|
screenDisplay(menu, x, y);
|
||||||
|
|
||||||
|
|
||||||
targets
|
targets
|
||||||
= fileToTab2D ("maps/original_1.txt", tab2d, SIZE_PLAY, playerPos, &nbr_targets);
|
= fileToTab2D ("maps/original_1.txt", tab2d, SIZE_PLAY, playerPos, &nbr_targets);
|
||||||
screenDisplayGameSDL (tab2d, &display_user);
|
screenDisplayGameSDL (tab2d, &display_user, NULL, -1);
|
||||||
inGameLoop (tab2d, SIZE_PLAY, playerPos, targets, nbr_targets,
|
inGameLoop (tab2d, SIZE_PLAY, playerPos, targets, nbr_targets,
|
||||||
&display_user, &score_user);
|
&display_user, &score_user);
|
||||||
|
|
||||||
|
|||||||
@@ -88,27 +88,41 @@ int countCustomMaps(char *name_directory)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char ** generatorMenu(char *name_directory, int *x, int *y)
|
char ** generatorMenu(char *name_directory, int *x, int *y, vect *pos_player)
|
||||||
{
|
{
|
||||||
|
pos_player->x = 4;
|
||||||
|
pos_player->y = 1;
|
||||||
int nbr_custom = countCustomMaps("maps");
|
int nbr_custom = countCustomMaps("maps");
|
||||||
(*x) = 7;
|
(*x) = 7;
|
||||||
(*y)= 5*(3+nbr_custom) +2;
|
(*y)= 5*(3+nbr_custom) +7;
|
||||||
char **menu = creatArea2D(*x,*y);
|
char **menu = creatArea2D(*x,*y);
|
||||||
int i = 1;
|
int i = 1;
|
||||||
for (i = 1;i < *y-1; ++i)
|
for (i = 1;i < *y-1; ++i)
|
||||||
{
|
{
|
||||||
menu[4][i] = EMPTY;
|
menu[4][i] = EMPTY;
|
||||||
|
if (i == *y-2)
|
||||||
|
{
|
||||||
|
menu[4][i] = BUTTON;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int j,k ;
|
int j,k ;
|
||||||
|
|
||||||
for (j = 5; j < *y; j+=5)
|
for (j = 5; j < *y-5; j+=5)
|
||||||
{
|
{
|
||||||
|
|
||||||
for (k = 1 ; k < 4; ++k)
|
for (k = 1 ; k < 4; ++k)
|
||||||
|
{
|
||||||
|
if (k == 1)
|
||||||
|
{
|
||||||
|
menu[k][j] = BUTTON;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
menu[k][j] = EMPTY;
|
menu[k][j] = EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user