ajout de la fonctionalite fermer avec la croix
This commit is contained in:
@@ -304,6 +304,10 @@ int inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
||||
{
|
||||
while (SDL_PollEvent (&event))
|
||||
{
|
||||
if (event.type == SDL_QUIT) {
|
||||
return 0; // Quitter si l'utilisateur ferme la fenêtre
|
||||
}
|
||||
|
||||
if (event.type == SDL_KEYDOWN)
|
||||
{
|
||||
input = event.key.keysym.scancode;
|
||||
@@ -424,6 +428,96 @@ int inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets,
|
||||
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.
|
||||
* \param tab2d Le tableau 2D du jeu.
|
||||
@@ -686,3 +780,6 @@ unsigned int scoreCalculator(score *score_user, bool win)
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -43,11 +43,12 @@ int main ()
|
||||
&display_user, &score_user, true);
|
||||
nullScore(&score_user);
|
||||
SDL_RenderClear(display_user.renderer);
|
||||
|
||||
SDL_Event event;
|
||||
|
||||
// Loop pour le jeu entier menu et les jeux.
|
||||
while(output != 0)
|
||||
{
|
||||
|
||||
SDL_RenderClear(display_user.renderer);
|
||||
backgroundDisplay(&display_user);
|
||||
if(output == -1)
|
||||
@@ -57,6 +58,10 @@ int main ()
|
||||
output = inGameLoop(menu, &dim_menu, &pos, &null, 1, &display_user, &score_user, true);
|
||||
nullScore(&score_user);
|
||||
}
|
||||
else if(output == -2)
|
||||
{
|
||||
output = inEditorLoop(menu, &dim_menu, &pos, &null, 1, &display_user, &score_user);
|
||||
}
|
||||
else
|
||||
{
|
||||
score_user.before = time(NULL);
|
||||
@@ -79,6 +84,7 @@ int main ()
|
||||
if(output != -1000) winOrLoseLoop(&display_user, &score_user, output==1);
|
||||
output = -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user