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

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");

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;
}