player animation

This commit is contained in:
cyjullien1
2025-01-07 23:22:13 +01:00
parent f566362d1c
commit 2d6a251f3c
9 changed files with 50 additions and 16 deletions
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -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
+1
View File
@@ -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);
+7 -2
View File
@@ -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");
+27 -11
View File
@@ -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;
}