menu affichage fonctionne et modification de la loop pour rectangle

This commit is contained in:
2024-12-25 16:49:31 +01:00
parent c50388def9
commit cabdc9b3de
10 changed files with 56 additions and 30 deletions
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -11,7 +11,7 @@ void displayImage (SDL_Renderer *renderer, SDL_Texture *texture, vect pos,
int size);
void initSDL (dis *display_user);
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
+2 -3
View File
@@ -47,9 +47,8 @@ bool isWin (char **tab2d, vect *targets, int nbr_targets);
bool islose (char **tab2d, const int N);
bool blockBox (char **tab2d, vect box_coor);
vect plusVect (vect one, vect two);
void inGameLoop (char **tab2d, int N, vect *playerPos,
vect *targets, int nbr_targets, dis *display_user, score *score_user);
void inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos,
vect *targets, int nbr_targets, dis *display_user, score *score_user, bool menu);
char *timeToText(time_t time);
void inMenuLoop(char **menu, int x, int y, vect *playerPos, vect *buttons, dis *display_user);
#endif // FONCTION_H
+1 -1
View File
@@ -4,5 +4,5 @@
vect *fileToTab2D (const char *name_file, char **tab,
const unsigned N, vect *player, int *nbr_targets);
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
+13 -5
View File
@@ -45,7 +45,7 @@ void screenDisplay (char **tab, int x ,int y )
* \param fov Le fov de la vision du joueur, -1 si desactiver.
* \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
= 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 ;
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;
//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;
if(limit_j > display_user->size_box) limit_j = display_user->size_box;
size = display_game / (fov*2 - 1);
//if(limit_j > display_user->size_box) limit_j = display_user->size_box;
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:
img = IMG_Load ("image/player_on_target.png");
break;
case BUTTON:
img = IMG_Load("image/button.png");
break;
case PLAYER_ON_BUTTON:
img = IMG_Load("image/player_on_button.png");
break;
}
texture
= SDL_CreateTextureFromSurface (display_user->renderer, img);
displayImage (display_user->renderer, texture, pos, size);
@@ -110,7 +119,6 @@ void screenDisplayGameSDL (char **tab, dis *display_user, vect *player_pos, int
y = 0;
x++;
}
SDL_RenderPresent (display_user->renderer);
}
+8 -5
View File
@@ -248,10 +248,11 @@ tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
* du joueur.
* \return Void
*/
void inGameLoop (char **tab2d, int N, vect *playerPos, vect *targets,
int nbr_targets, dis *display_user, score *score_user)
void inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
int nbr_targets, dis *display_user, score *score_user, bool menu)
{
int fov = -1;
if (menu) fov = 5;
vect size_menu
= { display_user->size_menu - 10, display_user->size_window / 3 - 10 };
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 delay = 0;
vect direction = { 0, 0 };
char input;
bool finish = false;
SDL_Event event;
screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov);
while (!finish)
{
while (SDL_PollEvent (&event))
@@ -305,7 +308,7 @@ void inGameLoop (char **tab2d, int N, vect *playerPos, vect *targets,
}
move (tab2d, playerPos, direction, score_user);
screenDisplayGameSDL (tab2d, display_user, playerPos, -1);
screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov);
char nbr_p[20];
snprintf (nbr_p, 20, "MP : %d", score_user->move_player);
char nbr_b[20];
@@ -320,7 +323,7 @@ void inGameLoop (char **tab2d, int N, vect *playerPos, vect *targets,
puts ("Win!");
finish = true;
}
if (islose (tab2d, N))
if (islose (tab2d, dim_tab->x))
{
puts ("lose!");
finish = true;
+13 -7
View File
@@ -31,17 +31,23 @@ int main ()
score score_user = {0, 0, 0,0};
int x,y;
vect *pos = malloc(sizeof(vect));
char**menu = generatorMenu("maps", &x, &y, pos);
screenDisplay(menu, x, y);
vect dim_menu = {0, 0};
vect pos = {4, 1};
char**menu = generatorMenu("maps", &dim_menu, &pos);
printf("x %d, y %d\n", dim_menu.x, dim_menu.y);
screenDisplay(menu, dim_menu.x, dim_menu.y);
targets
= fileToTab2D ("maps/original_1.txt", tab2d, SIZE_PLAY, playerPos, &nbr_targets);
screenDisplayGameSDL (tab2d, &display_user, NULL, -1);
inGameLoop (tab2d, SIZE_PLAY, playerPos, targets, nbr_targets,
&display_user, &score_user);
inGameLoop (menu, &dim_menu, &pos, targets, nbr_targets,
&display_user, &score_user, true);
vect dim = {SIZE_PLAY, SIZE_PLAY};
inGameLoop (tab2d, &dim, playerPos, targets, nbr_targets,
&display_user, &score_user, false);
//screenDisplay(tab2d, SIZE_PLAY, SIZE_PLAY);
SDL_DestroyWindow (display_user.window);
+9 -8
View File
@@ -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->y = 1;
int nbr_custom = countCustomMaps("maps");
(*x) = 7;
(*y)= 5*(3+nbr_custom) +7;
char **menu = creatArea2D(*x,*y);
int nbr_custom = countCustomMaps(name_directory);
size->x = 9;
size->y = 5*(3+nbr_custom) +7;
char **menu = creatArea2D(size->x,size->y);
int i = 1;
for (i = 1;i < *y-1; ++i)
for (i = 1;i < size->y-1; ++i)
{
menu[4][i] = EMPTY;
if (i == *y-2)
if (i == size->y-2)
{
menu[4][i] = BUTTON;
}
@@ -108,7 +108,7 @@ char ** generatorMenu(char *name_directory, int *x, int *y, vect *pos_player)
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)
@@ -124,6 +124,7 @@ char ** generatorMenu(char *name_directory, int *x, int *y, vect *pos_player)
}
}
menu[4][1] = PLAYER;
return menu;
}