ajout de la fonctionalite fermer avec la croix
This commit is contained in:
BIN
image/background.png
LFS
BIN
image/background.png
LFS
Binary file not shown.
BIN
image/lose.png
LFS
BIN
image/lose.png
LFS
Binary file not shown.
BIN
image/win.png
LFS
BIN
image/win.png
LFS
Binary file not shown.
@@ -54,5 +54,6 @@ char *timeToText(time_t time);
|
|||||||
void nullScore(score *player_score);
|
void nullScore(score *player_score);
|
||||||
void winOrLoseLoop(dis *display_user,score *score_user, bool win);
|
void winOrLoseLoop(dis *display_user,score *score_user, bool win);
|
||||||
unsigned int scoreCalculator(score *score_user, bool win);
|
unsigned int scoreCalculator(score *score_user, bool win);
|
||||||
|
int inEditorLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
||||||
|
int nbr_targets, dis *display_user, score *score_user);
|
||||||
#endif // FONCTION_H
|
#endif // FONCTION_H
|
||||||
|
|||||||
5
maps/custom_3.txt
Normal file
5
maps/custom_3.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
##########
|
||||||
|
#PC I#
|
||||||
|
# C #
|
||||||
|
#I #
|
||||||
|
##########
|
||||||
@@ -304,6 +304,10 @@ int inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
|||||||
{
|
{
|
||||||
while (SDL_PollEvent (&event))
|
while (SDL_PollEvent (&event))
|
||||||
{
|
{
|
||||||
|
if (event.type == SDL_QUIT) {
|
||||||
|
return 0; // Quitter si l'utilisateur ferme la fenêtre
|
||||||
|
}
|
||||||
|
|
||||||
if (event.type == SDL_KEYDOWN)
|
if (event.type == SDL_KEYDOWN)
|
||||||
{
|
{
|
||||||
input = event.key.keysym.scancode;
|
input = event.key.keysym.scancode;
|
||||||
@@ -424,6 +428,96 @@ int inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* \brief La fonction permet de faire la boucle de l'éditeur.
|
||||||
|
* \param tab2d Le tableau 2d carre.
|
||||||
|
* \param N LE nombre d'element de tab2d.
|
||||||
|
* \param playerPos La position de depart du joueur.
|
||||||
|
* \param targets Le tableau de toutes les positions des points d'interer de la
|
||||||
|
* maps.
|
||||||
|
* \param int nbr_targets Le nombre de point d'interer.
|
||||||
|
* \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
|
||||||
|
* du joueur.
|
||||||
|
* \return renvoie -2 ce qui signifie l'editeur
|
||||||
|
*/
|
||||||
|
int inEditorLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
||||||
|
int nbr_targets, dis *display_user, score *score_user)
|
||||||
|
{
|
||||||
|
int fov = -1;
|
||||||
|
int indice_button = -1;
|
||||||
|
|
||||||
|
vect size_menu
|
||||||
|
= { display_user->size_menu - 10, display_user->size_window / 3 - 10 };
|
||||||
|
vect coor_time
|
||||||
|
= { 40, display_user->size_window - display_user->size_menu + 50 };
|
||||||
|
vect coor_move_player
|
||||||
|
= { display_user->size_window / 3 + 60,
|
||||||
|
display_user->size_window - display_user->size_menu + 50 };
|
||||||
|
vect coor_move_box
|
||||||
|
= { (display_user->size_window / 3) * 2 + 10,
|
||||||
|
display_user->size_window - display_user->size_menu + 50 };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
char input;
|
||||||
|
bool finish = false;
|
||||||
|
SDL_Event event;
|
||||||
|
screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov);
|
||||||
|
while (!finish)
|
||||||
|
{
|
||||||
|
|
||||||
|
while (SDL_PollEvent (&event))
|
||||||
|
{
|
||||||
|
if (event.type == SDL_QUIT) {
|
||||||
|
return 0; // Quitter si l'utilisateur ferme la fenêtre
|
||||||
|
}
|
||||||
|
if (event.type == SDL_MOUSEBUTTONDOWN) {
|
||||||
|
if (event.button.button == SDL_BUTTON_LEFT) {
|
||||||
|
// Lorsque le clic gauche est effectué
|
||||||
|
int x, y;
|
||||||
|
SDL_GetMouseState(&x, &y); // Récupérer la position de la souris
|
||||||
|
|
||||||
|
printf("Clic gauche à la position: (%d, %d)\n", x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (event.type == SDL_KEYDOWN)
|
||||||
|
{
|
||||||
|
input = event.key.keysym.scancode;
|
||||||
|
switch (input)
|
||||||
|
{
|
||||||
|
case SDL_SCANCODE_ESCAPE:
|
||||||
|
|
||||||
|
return -1000;
|
||||||
|
finish = true;
|
||||||
|
break;
|
||||||
|
case SDL_SCANCODE_D:
|
||||||
|
break;
|
||||||
|
case SDL_SCANCODE_A:
|
||||||
|
break;
|
||||||
|
case SDL_SCANCODE_W:
|
||||||
|
break;
|
||||||
|
case SDL_SCANCODE_S:
|
||||||
|
break;
|
||||||
|
case SDL_SCANCODE_RETURN:
|
||||||
|
if (tab2d[playerPos->x][playerPos->y] == PLAYER_ON_BUTTON)
|
||||||
|
return indice_button;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos,
|
||||||
|
fov);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_Delay (16);
|
||||||
|
}
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \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.
|
||||||
@@ -686,3 +780,6 @@ unsigned int scoreCalculator(score *score_user, bool win)
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -43,11 +43,12 @@ int main ()
|
|||||||
&display_user, &score_user, true);
|
&display_user, &score_user, true);
|
||||||
nullScore(&score_user);
|
nullScore(&score_user);
|
||||||
SDL_RenderClear(display_user.renderer);
|
SDL_RenderClear(display_user.renderer);
|
||||||
|
SDL_Event event;
|
||||||
|
|
||||||
// Loop pour le jeu entier menu et les jeux.
|
// Loop pour le jeu entier menu et les jeux.
|
||||||
while(output != 0)
|
while(output != 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
SDL_RenderClear(display_user.renderer);
|
SDL_RenderClear(display_user.renderer);
|
||||||
backgroundDisplay(&display_user);
|
backgroundDisplay(&display_user);
|
||||||
if(output == -1)
|
if(output == -1)
|
||||||
@@ -57,6 +58,10 @@ int main ()
|
|||||||
output = inGameLoop(menu, &dim_menu, &pos, &null, 1, &display_user, &score_user, true);
|
output = inGameLoop(menu, &dim_menu, &pos, &null, 1, &display_user, &score_user, true);
|
||||||
nullScore(&score_user);
|
nullScore(&score_user);
|
||||||
}
|
}
|
||||||
|
else if(output == -2)
|
||||||
|
{
|
||||||
|
output = inEditorLoop(menu, &dim_menu, &pos, &null, 1, &display_user, &score_user);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
score_user.before = time(NULL);
|
score_user.before = time(NULL);
|
||||||
@@ -79,6 +84,7 @@ int main ()
|
|||||||
if(output != -1000) winOrLoseLoop(&display_user, &score_user, output==1);
|
if(output != -1000) winOrLoseLoop(&display_user, &score_user, output==1);
|
||||||
output = -1;
|
output = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user