diff --git a/image/background.png b/image/background.png index 8832aa4..461a7ff 100644 --- a/image/background.png +++ b/image/background.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee2072a51ca2d603e3920a6e7fd87a573e423e8f3879f6160c7426402e265b3d -size 5380 +oid sha256:226f1898bfc4f6263c9d0d274bb021d6451d45861496feba11378b72a81dc6dc +size 5387 diff --git a/image/lose.png b/image/lose.png index e7cb5e7..415fac7 100644 --- a/image/lose.png +++ b/image/lose.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02925611c855455e8f72f9d8088590aff6e9140244e963064070daaebd2e006a -size 5247 +oid sha256:cd349d51f91910b99f1f35aa7110583f3745010b0f0ce809ccdd45aab840603a +size 5557 diff --git a/image/win.png b/image/win.png index 48b8427..5eac2c9 100644 --- a/image/win.png +++ b/image/win.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3373a25c53d63664dba297a748199c169968ef98ce3d7a27f5ede92e5cb29261 -size 5436 +oid sha256:6ab49db57b1b7a32aea1a216387370ac0f952ce777e730aa5a7e82c91ecaf6c4 +size 5744 diff --git a/include/function.h b/include/function.h index 5e6b5fa..425fba2 100644 --- a/include/function.h +++ b/include/function.h @@ -54,5 +54,6 @@ char *timeToText(time_t time); void nullScore(score *player_score); void winOrLoseLoop(dis *display_user,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 diff --git a/maps/custom_3.txt b/maps/custom_3.txt new file mode 100644 index 0000000..521facf --- /dev/null +++ b/maps/custom_3.txt @@ -0,0 +1,5 @@ +########## +#PC I# +# C # +#I # +########## diff --git a/script/function.c b/script/function.c index 37fd59f..119c8d6 100644 --- a/script/function.c +++ b/script/function.c @@ -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; } + + + diff --git a/script/main.c b/script/main.c index bd26d0f..531e832 100644 --- a/script/main.c +++ b/script/main.c @@ -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; } + }