This commit is contained in:
2024-12-28 18:09:56 +01:00
parent ceffa3f628
commit 528926a0ce

View File

@@ -182,7 +182,7 @@ void move (char **tab, vect *playerPos, vect direction, score *score_user)
case 2: case 2:
// move player and the box // move player and the box
tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER; tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
tab[playerPos->x + direction.x * 2][playerPos->y + direction.y * 2] tab[playerPos->x + direction.x * 2][playerPos->y + direction.y * 2]
= BOX; = BOX;
score_user->move_box++; score_user->move_box++;
@@ -220,7 +220,8 @@ tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
score_user->move_box++; score_user->move_box++;
break; break;
case 7: case 7:
tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER_ON_BUTTON; tab[playerPos->x + direction.x][playerPos->y + direction.y]
= PLAYER_ON_BUTTON;
break; break;
default: default:
printf ("Commande inconnue !\n"); printf ("Commande inconnue !\n");
@@ -232,7 +233,7 @@ 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) else if (playerState == PLAYER_ON_BUTTON)
{ {
tab[playerPos->x][playerPos->y] = BUTTON; tab[playerPos->x][playerPos->y] = BUTTON;
} }
@@ -247,7 +248,7 @@ tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
/** /**
* *
* \brief La fonction permet de faire la boucle de jeu. * \brief La fonction permet de faire la boucle de jeu et le menu.
* \param tab2d Le tableau 2d carre. * \param tab2d Le tableau 2d carre.
* \param N LE nombre d'element de tab2d. * \param N LE nombre d'element de tab2d.
* \param playerPos La position de depart du joueur. * \param playerPos La position de depart du joueur.
@@ -257,10 +258,12 @@ tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
* \param display_user Tout les information SDL pour afficher le jeu. * \param display_user Tout les information SDL pour afficher le jeu.
* \param score_user Toute les données nécessaire pour calculer le score fini * \param score_user Toute les données nécessaire pour calculer le score fini
* du joueur. * du joueur.
* \return Void *\param menu True si c'est la loop du menu.
* \return L'indice de la map si c'est un menu, sinon renvoie -1
*/ */
int 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;
int indice_button = -1; int indice_button = -1;
@@ -275,10 +278,13 @@ int 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; if (menu)
else{ fov = 5;
displayTextSDL (display_user, "MP : 0", coor_move_player, size_menu, 50); else
{
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);
} }
@@ -320,14 +326,16 @@ int inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
direction.y = 0; direction.y = 0;
break; break;
case SDL_SCANCODE_RETURN: case SDL_SCANCODE_RETURN:
if (tab2d[playerPos->x][playerPos->y] == PLAYER_ON_BUTTON) return indice_button; if (tab2d[playerPos->x][playerPos->y] == PLAYER_ON_BUTTON)
return indice_button;
break; 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) if (!menu)
{ {
@@ -337,9 +345,9 @@ int inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
snprintf (nbr_b, 20, "MB : %d", score_user->move_box); snprintf (nbr_b, 20, "MB : %d", score_user->move_box);
displayTextSDL (display_user, nbr_p, coor_move_player, displayTextSDL (display_user, nbr_p, coor_move_player,
size_menu, 50); size_menu, 50);
displayTextSDL (display_user, nbr_b, coor_move_box, size_menu, displayTextSDL (display_user, nbr_b, coor_move_box,
50); size_menu, 50);
if (isWin (tab2d, targets, nbr_targets)) if (isWin (tab2d, targets, nbr_targets))
{ {
puts ("Win!"); puts ("Win!");
@@ -350,36 +358,49 @@ int 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) else if (tab2d[playerPos->x][playerPos->y] == PLAYER_ON_BUTTON)
{ {
vect size_txt = {display_user->size_menu, display_user->size_window}; vect size_txt = { display_user->size_menu,
char txt_empty[100] = " "; display_user->size_window };
displayTextSDL (display_user, txt_empty, coor_time, size_txt, 100); char txt_empty[100]
= " "
" ";
displayTextSDL (display_user, txt_empty, coor_time,
size_txt, 100);
char txt_button[50] = ""; char txt_button[50] = "";
indice_button = playerPos->y / 5; indice_button = playerPos->y / 5;
if(indice_button <= 3) if (indice_button <= 3)
{ {
snprintf(txt_button, 50, "Voulez-vous faire le niveau Original %d ?", indice_button ); snprintf (txt_button, 50,
"Voulez-vous faire le niveau Original %d ?",
indice_button);
} }
else if (indice_button == dim_tab->y /5) else if (indice_button == dim_tab->y / 5)
{ {
snprintf(txt_button, 50, "Voulez-vous faire une map Custom (%d)?", indice_button-3); snprintf (txt_button, 50,
"Voulez-vous faire une map Custom (%d)?",
indice_button - 3);
} }
else else
{ {
snprintf(txt_button, 50, "Voulez-vous faire le niveau Custom %d ?", indice_button - 3); snprintf (txt_button, 50,
"Voulez-vous faire le niveau Custom %d ?",
indice_button - 3);
} }
displayTextSDL (display_user, txt_button, coor_time, size_txt, 50); displayTextSDL (display_user, txt_button, coor_time,
size_txt, 50);
} }
else { else
vect size_txt = {display_user->size_menu, display_user->size_window}; {
char txt_empty[100] = " "; vect size_txt = { display_user->size_menu,
displayTextSDL (display_user, txt_empty, coor_time, size_txt, 100); 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);
@@ -387,7 +408,9 @@ int 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);
if (!menu) 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);
} }
@@ -396,7 +419,6 @@ int inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
return -1; return -1;
} }
/** /**
* \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.