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); 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
+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 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
+1 -1
View File
@@ -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
+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. * \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);
} }
+8 -5
View File
@@ -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;
+13 -7
View File
@@ -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);
+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->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;
} }