diff --git a/image/playerDown.png b/image/playerDown.png new file mode 100644 index 0000000..b3a95fa --- /dev/null +++ b/image/playerDown.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fb31ce1e8a615a79ebcd65976472fc373edde955d20b234ff568a1fa3427e25 +size 4515 diff --git a/image/playerFall.png b/image/playerFall.png new file mode 100644 index 0000000..d624a36 --- /dev/null +++ b/image/playerFall.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cf03e02f145eb04dbe5648fb29b9947912119591d38b2c914f8664386c31b42 +size 4559 diff --git a/image/playerLeft.png b/image/playerLeft.png new file mode 100644 index 0000000..d1a9763 --- /dev/null +++ b/image/playerLeft.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b82a7e2c7972bb91ecf514b54b319f4f84b0d7f7f006bc03f34dadaf2a8a7e30 +size 4514 diff --git a/image/playerUp.png b/image/playerUp.png new file mode 100644 index 0000000..67d6f40 --- /dev/null +++ b/image/playerUp.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48b313b83bf75024f9ee0c045393ef4472fe94870f6dd62a495733bb128bcd8c +size 4513 diff --git a/image/win.png b/image/win.png index 5eac2c9..0291fae 100644 --- a/image/win.png +++ b/image/win.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ab49db57b1b7a32aea1a216387370ac0f952ce777e730aa5a7e82c91ecaf6c4 -size 5744 +oid sha256:b7796559e97248b038a406719662a230ede699ee9187d0eff22677dce8c52852 +size 5838 diff --git a/include/display.h b/include/display.h index 011a441..57d42a3 100644 --- a/include/display.h +++ b/include/display.h @@ -14,7 +14,7 @@ void displayImage (SDL_Renderer *renderer, SDL_Texture *texture, vect pos, int size); void initSDL (dis *display_user); void displayTextSDL(dis *display_user,char *text, vect coor, vect size, int font_size); -void screenDisplayGameSDL (char **tab,vect dim_tab, dis *display_user, vect *player_pos, int fov); +void screenDisplayGameSDL (char **tab,vect dim_tab, dis *display_user, vect *player_pos, int fov, vect direction); void backgroundDisplay(dis *display_user,int bg); #endif // !DISPLAY_H diff --git a/include/function.h b/include/function.h index 82c8fff..de9cd40 100644 --- a/include/function.h +++ b/include/function.h @@ -55,6 +55,7 @@ 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); +unsigned int scoreCalculatorCyp(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, int num_fichier); int titleScreen (dis *display_user); diff --git a/script/display.c b/script/display.c index 9bd1d6d..996a224 100644 --- a/script/display.c +++ b/script/display.c @@ -43,9 +43,10 @@ void screenDisplay (char **tab, int x ,int y ) * l'affichage SDL * \param player_pos la position du joueur * \param fov Le fov de la vision du joueur, -1 si desactiver. + * \param direction La direction du personnage. * \return Void */ -void screenDisplayGameSDL (char **tab,vect dim_tab, dis *display_user, vect *player_pos, int fov) +void screenDisplayGameSDL (char **tab,vect dim_tab, dis *display_user, vect *player_pos, int fov, vect direction) { unsigned int display_game = display_user->size_window - display_user->size_menu; @@ -102,7 +103,11 @@ void screenDisplayGameSDL (char **tab,vect dim_tab, dis *display_user, vect *pla break; case PLAYER: - img = IMG_Load ("image/player.png"); + if(direction.y == 1){ img = IMG_Load ("image/player.png");} + else if(direction.y == -1){ img = IMG_Load ("image/playerLeft.png");} + else if(direction.x == -1){ img = IMG_Load ("image/playerUp.png");} + else if(direction.x == 1){ img = IMG_Load ("image/playerDown.png");} + else if(direction.y == 0 && direction.x == 0){ img = IMG_Load ("image/playerFall.png");} break; case TARGET: img = IMG_Load ("image/target.png"); diff --git a/script/function.c b/script/function.c index aa36a44..5f7bfb8 100644 --- a/script/function.c +++ b/script/function.c @@ -147,10 +147,10 @@ char canIGoDirection (char valueOfNCase, char valueOfNPlusOneCase) * \param direction La direction que le joueur veut effectuer. * \param score_user Toutes les données nécessaire pour calculer le score fini * du joueur. - * \return Void + * \return int return 1 si le joueur n'a pas bouger. * */ -void move (char **tab, vect *playerPos, vect direction, score *score_user) +int move (char **tab, vect *playerPos, vect direction, score *score_user) { short int valueOfNCase = tab[playerPos->x + direction.x][playerPos->y + direction.y]; @@ -179,6 +179,7 @@ void move (char **tab, vect *playerPos, vect direction, score *score_user) { case 0: playAudio(2); + return 1; break; case 1: //move player @@ -251,6 +252,7 @@ void move (char **tab, vect *playerPos, vect direction, score *score_user) playerPos->x = playerPos->x + direction.x; playerPos->y = playerPos->y + direction.y; } + return 0; } /** @@ -303,7 +305,7 @@ int inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets, char input; bool finish = false; SDL_Event event; - screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov); + screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov,direction); while (!finish) { while (SDL_PollEvent (&event)) @@ -346,9 +348,10 @@ int inGameLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets, direction.x = 0; direction.y = 0; } - move (tab2d, playerPos, direction, score_user); + int tmp = move (tab2d, playerPos, direction, score_user); + if(tmp == 1){direction.x = 0; direction.y = 0;} screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, - fov); + fov,direction); if (!menu) { @@ -503,7 +506,7 @@ int inEditorLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets, char input; bool finish = false; SDL_Event event; - screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov); + screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov,direction); int GRID_SIZE = 20; @@ -544,7 +547,7 @@ int inEditorLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets, tab2d[row][col] += 1; } // Met à jour l'affichage - screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov); + screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov,direction); } } if (event.button.button == SDL_BUTTON_RIGHT) { @@ -570,7 +573,7 @@ int inEditorLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets, tab2d[row][col] -= 1; } // Met à jour l'affichage - screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov); + screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, fov,direction); } } } @@ -609,9 +612,10 @@ int inEditorLoop (char **tab2d, vect *dim_tab, vect *playerPos, vect *targets, direction.x = 0; direction.y = 0; } - move (tab2d, playerPos, direction, score_user); + int tmp = move (tab2d, playerPos, direction, score_user); + if(tmp == 1){direction.x = 0; direction.y = 0;} screenDisplayGameSDL (tab2d, *dim_tab, display_user, playerPos, - fov); + fov,direction); } @@ -941,7 +945,7 @@ void winOrLoseLoop(dis *display_user,score *score_user, bool win) displayImage(display_user->renderer, texture, pos, display_user->size_window); char text[50] = ""; - snprintf(text, 50, "Score : %u",scoreCalculator(score_user, win)); + snprintf(text, 50, "Score : %u",scoreCalculatorCyp(score_user, win)); vect pos_score = {10, (display_user->size_window*3) / 4}; vect size_score = {display_user->size_window / 4, display_user->size_window - 10}; displayTextSDL(display_user, text , pos_score, size_score, 80); @@ -976,5 +980,17 @@ unsigned int scoreCalculator(score *score_user, bool win) return result; } +unsigned int scoreCalculatorCyp(score *score_user, bool win) +{ + unsigned short int result = 0; //plus grand nombre + int time = score_user->after - score_user->before; + result += (score_user->move_box + score_user->move_player) * time; + if (!win) + { + result /= 50; + } + return result; +} +