menu affichage
This commit is contained in:
@@ -47,8 +47,9 @@ 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, vect *dim_tab, vect *playerPos,
|
|
||||||
vect *targets, int nbr_targets, dis *display_user, score *score_user, bool menu);
|
int 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);
|
char *timeToText(time_t time);
|
||||||
|
|
||||||
#endif // FONCTION_H
|
#endif // FONCTION_H
|
||||||
|
|||||||
@@ -114,6 +114,10 @@ char canIGoDirection (char valueOfNCase, char valueOfNPlusOneCase)
|
|||||||
// move the box but player on a target
|
// move the box but player on a target
|
||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
|
if (valueOfNCase == BUTTON)
|
||||||
|
{
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
if (valueOfNCase == TARGET)
|
if (valueOfNCase == TARGET)
|
||||||
{
|
{
|
||||||
// move player on target
|
// move player on target
|
||||||
@@ -215,6 +219,9 @@ tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
|
|||||||
= PLAYER_ON_TARGET;
|
= PLAYER_ON_TARGET;
|
||||||
score_user->move_box++;
|
score_user->move_box++;
|
||||||
break;
|
break;
|
||||||
|
case 7:
|
||||||
|
tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER_ON_BUTTON;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
printf ("Commande inconnue !\n");
|
printf ("Commande inconnue !\n");
|
||||||
}
|
}
|
||||||
@@ -225,6 +232,10 @@ tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
|
|||||||
{
|
{
|
||||||
tab[playerPos->x][playerPos->y] = TARGET;
|
tab[playerPos->x][playerPos->y] = TARGET;
|
||||||
}
|
}
|
||||||
|
else if(playerState == PLAYER_ON_BUTTON)
|
||||||
|
{
|
||||||
|
tab[playerPos->x][playerPos->y] = BUTTON;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tab[playerPos->x][playerPos->y] = EMPTY;
|
tab[playerPos->x][playerPos->y] = EMPTY;
|
||||||
@@ -248,11 +259,12 @@ tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
|
|||||||
* du joueur.
|
* du joueur.
|
||||||
* \return Void
|
* \return Void
|
||||||
*/
|
*/
|
||||||
void inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
int inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
||||||
int nbr_targets, dis *display_user, score *score_user, bool menu)
|
int nbr_targets, dis *display_user, score *score_user, bool menu)
|
||||||
{
|
{
|
||||||
int fov = -1;
|
int fov = -1;
|
||||||
if (menu) fov = 5;
|
int indice_button = -1;
|
||||||
|
|
||||||
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
|
||||||
@@ -263,8 +275,13 @@ void inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
|||||||
vect coor_move_box
|
vect coor_move_box
|
||||||
= { (display_user->size_window / 3) * 2 + 10,
|
= { (display_user->size_window / 3) * 2 + 10,
|
||||||
display_user->size_window - display_user->size_menu + 10 };
|
display_user->size_window - display_user->size_menu + 10 };
|
||||||
|
|
||||||
|
if (menu) fov = 5;
|
||||||
|
else{
|
||||||
displayTextSDL (display_user, "MP : 0", coor_move_player, size_menu, 50);
|
displayTextSDL (display_user, "MP : 0", coor_move_player, size_menu, 50);
|
||||||
displayTextSDL (display_user, "MB : 0", coor_move_box, size_menu, 50);
|
displayTextSDL (display_user, "MB : 0", coor_move_box, size_menu, 50);
|
||||||
|
}
|
||||||
|
|
||||||
time_t time_start = time (NULL);
|
time_t time_start = time (NULL);
|
||||||
time_t current_time = time (NULL);
|
time_t current_time = time (NULL);
|
||||||
time_t delay = 0;
|
time_t delay = 0;
|
||||||
@@ -302,13 +319,18 @@ void inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
|||||||
direction.x = 1;
|
direction.x = 1;
|
||||||
direction.y = 0;
|
direction.y = 0;
|
||||||
break;
|
break;
|
||||||
|
case SDL_SCANCODE_RETURN:
|
||||||
|
if (tab2d[playerPos->x][playerPos->y] == PLAYER_ON_BUTTON) return indice_button;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
direction.x = 0;
|
direction.x = 0;
|
||||||
direction.y = 0;
|
direction.y = 0;
|
||||||
}
|
}
|
||||||
move (tab2d, playerPos, direction, score_user);
|
move (tab2d, playerPos, direction, score_user);
|
||||||
|
|
||||||
screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov);
|
screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov);
|
||||||
|
if (!menu)
|
||||||
|
{
|
||||||
|
|
||||||
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];
|
||||||
@@ -328,6 +350,36 @@ void inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
|||||||
puts ("lose!");
|
puts ("lose!");
|
||||||
finish = true;
|
finish = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (tab2d[playerPos->x][playerPos->y] == PLAYER_ON_BUTTON)
|
||||||
|
{
|
||||||
|
vect size_txt = {display_user->size_menu, display_user->size_window};
|
||||||
|
char txt_empty[100] = " ";
|
||||||
|
displayTextSDL (display_user, txt_empty, coor_time, size_txt, 100);
|
||||||
|
char txt_button[50] = "";
|
||||||
|
indice_button = playerPos->y / 5;
|
||||||
|
if(indice_button <= 3)
|
||||||
|
{
|
||||||
|
snprintf(txt_button, 50, "Voulez-vous faire le niveau Original %d ?", indice_button );
|
||||||
|
}
|
||||||
|
else if (indice_button == dim_tab->y /5)
|
||||||
|
{
|
||||||
|
snprintf(txt_button, 50, "Voulez-vous faire une map Custom (%d)?", indice_button-3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
snprintf(txt_button, 50, "Voulez-vous faire le niveau Custom %d ?", indice_button - 3);
|
||||||
|
}
|
||||||
|
displayTextSDL (display_user, txt_button, coor_time, size_txt, 50);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
vect size_txt = {display_user->size_menu, display_user->size_window};
|
||||||
|
char txt_empty[100] = " ";
|
||||||
|
displayTextSDL (display_user, txt_empty, coor_time, size_txt, 100);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
current_time = time (NULL);
|
current_time = time (NULL);
|
||||||
@@ -335,12 +387,13 @@ void inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
|||||||
{
|
{
|
||||||
delay = current_time;
|
delay = current_time;
|
||||||
char *char_time = timeToText (time (NULL) - time_start);
|
char *char_time = timeToText (time (NULL) - time_start);
|
||||||
displayTextSDL (display_user, char_time, coor_time, size_menu, 50);
|
if (!menu) displayTextSDL (display_user, char_time, coor_time, size_menu, 50);
|
||||||
free (char_time);
|
free (char_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_Delay (16);
|
SDL_Delay (16);
|
||||||
}
|
}
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ int main ()
|
|||||||
= fileToTab2D ("maps/original_1.txt", tab2d, SIZE_PLAY, playerPos, &nbr_targets);
|
= fileToTab2D ("maps/original_1.txt", tab2d, SIZE_PLAY, playerPos, &nbr_targets);
|
||||||
inGameLoop (menu, &dim_menu, &pos, targets, nbr_targets,
|
inGameLoop (menu, &dim_menu, &pos, targets, nbr_targets,
|
||||||
&display_user, &score_user, true);
|
&display_user, &score_user, true);
|
||||||
|
SDL_RenderClear(display_user.renderer);
|
||||||
vect dim = {SIZE_PLAY, SIZE_PLAY};
|
vect dim = {SIZE_PLAY, SIZE_PLAY};
|
||||||
inGameLoop (tab2d, &dim, playerPos, targets, nbr_targets,
|
inGameLoop (tab2d, &dim, playerPos, targets, nbr_targets,
|
||||||
&display_user, &score_user, false);
|
&display_user, &score_user, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user