menu affichage fonctionne et modification de la loop pour rectangle
This commit is contained in:
BIN
image/button.png
LFS
Normal file
BIN
image/button.png
LFS
Normal file
Binary file not shown.
BIN
image/button.png~
LFS
Normal file
BIN
image/button.png~
LFS
Normal file
Binary file not shown.
BIN
image/player_on_button.png
LFS
Normal file
BIN
image/player_on_button.png
LFS
Normal file
Binary file not shown.
@@ -11,7 +11,7 @@ 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 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);
|
void screenDisplayGameSDL (char **tab,vect dim_tab, dis *display_user, vect *player_pos, int fov);
|
||||||
|
|
||||||
|
|
||||||
#endif // !DISPLAY_H
|
#endif // !DISPLAY_H
|
||||||
|
|||||||
@@ -47,9 +47,8 @@ bool isWin (char **tab2d, vect *targets, int nbr_targets);
|
|||||||
bool islose (char **tab2d, const int N);
|
bool islose (char **tab2d, const int N);
|
||||||
bool blockBox (char **tab2d, vect box_coor);
|
bool blockBox (char **tab2d, vect box_coor);
|
||||||
vect plusVect (vect one, vect two);
|
vect plusVect (vect one, vect two);
|
||||||
void inGameLoop (char **tab2d, int N, vect *playerPos,
|
void inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos,
|
||||||
vect *targets, int nbr_targets, dis *display_user, score *score_user);
|
vect *targets, int nbr_targets, dis *display_user, score *score_user, bool menu);
|
||||||
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, vect *pos_player);
|
char ** generatorMenu(char *name_directory, vect *size, vect *pos_player);
|
||||||
#endif // !READ_H
|
#endif // !READ_H
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ void screenDisplay (char **tab, int x ,int y )
|
|||||||
* \param fov Le fov de la vision du joueur, -1 si desactiver.
|
* \param fov Le fov de la vision du joueur, -1 si desactiver.
|
||||||
* \return Void
|
* \return Void
|
||||||
*/
|
*/
|
||||||
void screenDisplayGameSDL (char **tab, dis *display_user, vect *player_pos, int fov)
|
void screenDisplayGameSDL (char **tab,vect dim_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;
|
||||||
@@ -61,10 +61,12 @@ void screenDisplayGameSDL (char **tab, dis *display_user, vect *player_pos, int
|
|||||||
start_j = player_pos->x - fov +1 ;
|
start_j = player_pos->x - fov +1 ;
|
||||||
if(start_j < 0) start_j = 0;
|
if(start_j < 0) start_j = 0;
|
||||||
limit_i = player_pos->y + fov;
|
limit_i = player_pos->y + fov;
|
||||||
if(limit_i > display_user->size_box) limit_i = display_user->size_box;
|
//if(limit_i > display_user->size_box) limit_i = display_user->size_box;
|
||||||
|
if(limit_i > dim_tab.y) limit_i = dim_tab.y;
|
||||||
limit_j = player_pos->x + fov;
|
limit_j = player_pos->x + fov;
|
||||||
if(limit_j > display_user->size_box) limit_j = display_user->size_box;
|
//if(limit_j > display_user->size_box) limit_j = display_user->size_box;
|
||||||
size = display_game / (fov*2 - 1);
|
if(limit_j > dim_tab.x) limit_j = dim_tab.x;
|
||||||
|
size = display_game / (fov*2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -99,7 +101,14 @@ void screenDisplayGameSDL (char **tab, dis *display_user, vect *player_pos, int
|
|||||||
case PLAYER_ON_TARGET:
|
case PLAYER_ON_TARGET:
|
||||||
img = IMG_Load ("image/player_on_target.png");
|
img = IMG_Load ("image/player_on_target.png");
|
||||||
break;
|
break;
|
||||||
|
case BUTTON:
|
||||||
|
img = IMG_Load("image/button.png");
|
||||||
|
break;
|
||||||
|
case PLAYER_ON_BUTTON:
|
||||||
|
img = IMG_Load("image/player_on_button.png");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
texture
|
texture
|
||||||
= SDL_CreateTextureFromSurface (display_user->renderer, img);
|
= SDL_CreateTextureFromSurface (display_user->renderer, img);
|
||||||
displayImage (display_user->renderer, texture, pos, size);
|
displayImage (display_user->renderer, texture, pos, size);
|
||||||
@@ -110,7 +119,6 @@ void screenDisplayGameSDL (char **tab, dis *display_user, vect *player_pos, int
|
|||||||
y = 0;
|
y = 0;
|
||||||
x++;
|
x++;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderPresent (display_user->renderer);
|
SDL_RenderPresent (display_user->renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -248,10 +248,11 @@ tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
|
|||||||
* du joueur.
|
* du joueur.
|
||||||
* \return Void
|
* \return Void
|
||||||
*/
|
*/
|
||||||
void inGameLoop (char **tab2d, int N, vect *playerPos, vect *targets,
|
void inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
||||||
int nbr_targets, dis *display_user, score *score_user)
|
int nbr_targets, dis *display_user, score *score_user, bool menu)
|
||||||
{
|
{
|
||||||
|
int fov = -1;
|
||||||
|
if (menu) fov = 5;
|
||||||
vect size_menu
|
vect size_menu
|
||||||
= { display_user->size_menu - 10, display_user->size_window / 3 - 10 };
|
= { display_user->size_menu - 10, display_user->size_window / 3 - 10 };
|
||||||
vect coor_time
|
vect coor_time
|
||||||
@@ -268,9 +269,11 @@ void inGameLoop (char **tab2d, int N, vect *playerPos, vect *targets,
|
|||||||
time_t current_time = time (NULL);
|
time_t current_time = time (NULL);
|
||||||
time_t delay = 0;
|
time_t delay = 0;
|
||||||
vect direction = { 0, 0 };
|
vect direction = { 0, 0 };
|
||||||
|
|
||||||
char input;
|
char input;
|
||||||
bool finish = false;
|
bool finish = false;
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov);
|
||||||
while (!finish)
|
while (!finish)
|
||||||
{
|
{
|
||||||
while (SDL_PollEvent (&event))
|
while (SDL_PollEvent (&event))
|
||||||
@@ -305,7 +308,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, playerPos, -1);
|
screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov);
|
||||||
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];
|
||||||
@@ -320,7 +323,7 @@ void inGameLoop (char **tab2d, int N, vect *playerPos, vect *targets,
|
|||||||
puts ("Win!");
|
puts ("Win!");
|
||||||
finish = true;
|
finish = true;
|
||||||
}
|
}
|
||||||
if (islose (tab2d, N))
|
if (islose (tab2d, dim_tab->x))
|
||||||
{
|
{
|
||||||
puts ("lose!");
|
puts ("lose!");
|
||||||
finish = true;
|
finish = true;
|
||||||
|
|||||||
@@ -31,17 +31,23 @@ int main ()
|
|||||||
|
|
||||||
score score_user = {0, 0, 0,0};
|
score score_user = {0, 0, 0,0};
|
||||||
|
|
||||||
int x,y;
|
vect dim_menu = {0, 0};
|
||||||
vect *pos = malloc(sizeof(vect));
|
vect pos = {4, 1};
|
||||||
char**menu = generatorMenu("maps", &x, &y, pos);
|
char**menu = generatorMenu("maps", &dim_menu, &pos);
|
||||||
screenDisplay(menu, x, y);
|
printf("x %d, y %d\n", dim_menu.x, dim_menu.y);
|
||||||
|
|
||||||
|
screenDisplay(menu, dim_menu.x, dim_menu.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, NULL, -1);
|
inGameLoop (menu, &dim_menu, &pos, targets, nbr_targets,
|
||||||
inGameLoop (tab2d, SIZE_PLAY, playerPos, targets, nbr_targets,
|
&display_user, &score_user, true);
|
||||||
&display_user, &score_user);
|
|
||||||
|
vect dim = {SIZE_PLAY, SIZE_PLAY};
|
||||||
|
inGameLoop (tab2d, &dim, playerPos, targets, nbr_targets,
|
||||||
|
&display_user, &score_user, false);
|
||||||
|
|
||||||
|
|
||||||
//screenDisplay(tab2d, SIZE_PLAY, SIZE_PLAY);
|
//screenDisplay(tab2d, SIZE_PLAY, SIZE_PLAY);
|
||||||
SDL_DestroyWindow (display_user.window);
|
SDL_DestroyWindow (display_user.window);
|
||||||
|
|||||||
@@ -88,19 +88,19 @@ int countCustomMaps(char *name_directory)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char ** generatorMenu(char *name_directory, int *x, int *y, vect *pos_player)
|
char ** generatorMenu(char *name_directory, vect *size, vect *pos_player)
|
||||||
{
|
{
|
||||||
pos_player->x = 4;
|
pos_player->x = 4;
|
||||||
pos_player->y = 1;
|
pos_player->y = 1;
|
||||||
int nbr_custom = countCustomMaps("maps");
|
int nbr_custom = countCustomMaps(name_directory);
|
||||||
(*x) = 7;
|
size->x = 9;
|
||||||
(*y)= 5*(3+nbr_custom) +7;
|
size->y = 5*(3+nbr_custom) +7;
|
||||||
char **menu = creatArea2D(*x,*y);
|
char **menu = creatArea2D(size->x,size->y);
|
||||||
int i = 1;
|
int i = 1;
|
||||||
for (i = 1;i < *y-1; ++i)
|
for (i = 1;i < size->y-1; ++i)
|
||||||
{
|
{
|
||||||
menu[4][i] = EMPTY;
|
menu[4][i] = EMPTY;
|
||||||
if (i == *y-2)
|
if (i == size->y-2)
|
||||||
{
|
{
|
||||||
menu[4][i] = BUTTON;
|
menu[4][i] = BUTTON;
|
||||||
}
|
}
|
||||||
@@ -108,7 +108,7 @@ char ** generatorMenu(char *name_directory, int *x, int *y, vect *pos_player)
|
|||||||
|
|
||||||
int j,k ;
|
int j,k ;
|
||||||
|
|
||||||
for (j = 5; j < *y-5; j+=5)
|
for (j = 5; j < size->y-5; j+=5)
|
||||||
{
|
{
|
||||||
|
|
||||||
for (k = 1 ; k < 4; ++k)
|
for (k = 1 ; k < 4; ++k)
|
||||||
@@ -124,6 +124,7 @@ char ** generatorMenu(char *name_directory, int *x, int *y, vect *pos_player)
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
menu[4][1] = PLAYER;
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user