I would like to detect the previous movement of the character to display an animation in relation of the previous mouvement. For example, if the previous mouvement is 'move_right', when the character stopped, I would like to display an image turned to the right. And the same way for the left. Can you help me ?
EDIT
I'll put you a portion of the concerned code, hope it will help you.
import pygame
import constants
import time
clock = pygame.time.Clock()
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.velocity = 5
self.HeatBox = constants.S_PLAYER_HEATBOX
self.rect = self.HeatBox.get_rect()
self.rect.x = 500
self.rect.y = 300
self.WalkCount = 0
def move_right(self):
self.rect.x += self.velocity
def move_left(self):
self.rect.x -= self.velocity
def move_up(self):
self.rect.y -= self.velocity
def move_down(self):
self.rect.y += self.velocity
def draw_game():
global SURFACE_MAIN, Player
SURFACE_MAIN.fill(constants.COLOR_DEFAULT_BG)
SURFACE_MAIN.blit(constants.S_BACKGROUND, (0, 0))
SURFACE_MAIN.blit(constants.S_PLAYER_HEATBOX, game.player.rect)
if game.player.WalkCount + 1 >= 40:
game.player.WalkCount = 0
if game.pressed.get(pygame.K_RIGHT):
SURFACE_MAIN.blit(constants.S_PLAYER_W_RIGHT[game.player.WalkCount//10],
game.player.rect)
game.player.move_right()
if game.pressed.get(pygame.K_LEFT):
SURFACE_MAIN.blit(constants.S_PLAYER_W_LEFT[game.player.WalkCount//10],
game.player.rect)
game.player.move_left()
if game.pressed.get(pygame.K_UP):
game.player.move_up()
if game.pressed.get(pygame.K_DOWN):
game.player.move_down()
pygame.display.flip()
def game_main_loop():
game_quit = False
while not game_quit:
clock.tick(60)
events_list = pygame.event.get()
for event in events_list:
if event.type == pygame.QUIT:
game_quit = True
elif event.type == pygame.KEYDOWN:
game.pressed[event.key] = True
elif event.type == pygame.KEYUP:
game.pressed[event.key] = False
draw_game()
pygame.quit()
exit()
def game_initialize():
global SURFACE_MAIN, Player
pygame.init()
pygame.display.set_caption("RogueLike")
SURFACE_MAIN = pygame.display.set_mode((constants.GAME_WIDTH,
constants.GAME_HEIGHT))
class gameplay:
def __init__(self):
self.player = Player()
self.pressed = {}
game = gameplay()
if __name__ == '__main__':
game_initialize()
game_main_loop()
In a file named constants.py I have all my sprites
S_BACKGROUND = pygame.image.load('Sprites/Map/Map_Test_3.png')
S_PLAYER_HEATBOX = pygame.image.load('Sprites/Heros/Knight/HeatBox.png')
S_PLAYER_RIGHT =
[pygame.image.load('Sprites/Heros/Knight/Right/sprite_0.png'),
pygame.image.load('Sprites/Heros/Knight/Right/sprite_1.png'),
pygame.image.load('Sprites/Heros/Knight/Right/sprite_2.png'),
pygame.image.load('Sprites/Heros/Knight/Right/sprite_3.png')]
S_PLAYER_LEFT =
[pygame.image.load('Sprites/Heros/Knight/Left/sprite_0.png'),
pygame.image.load('Sprites/Heros/Knight/Left/sprite_1.png'),
pygame.image.load('Sprites/Heros/Knight/Left/sprite_2.png'),
pygame.image.load('Sprites/Heros/Knight/Left/sprite_3.png')]
S_PLAYER_W_RIGHT =
[pygame.image.load('Sprites/Heros/Knight/W_Right/sprite_0.png'),
pygame.image.load('Sprites/Heros/Knight/W_Right/sprite_1.png'),
pygame.image.load('Sprites/Heros/Knight/W_Right/sprite_2.png'),
pygame.image.load('Sprites/Heros/Knight/W_Right/sprite_3.png')]
S_PLAYER_W_LEFT =
[pygame.image.load('Sprites/Heros/Knight/W_Left/sprite_0.png'),
pygame.image.load('Sprites/Heros/Knight/W_Left/sprite_1.png'),
pygame.image.load('Sprites/Heros/Knight/W_Left/sprite_2.png'),
pygame.image.load('Sprites/Heros/Knight/W_Left/sprite_3.png')]
# Left : means sprites turned to the right when the character is stopped.
# Right : means sprites turned to the left when the character is stopped.
# W_Left : means sprites turned to theleft when the character is walking.
# W_Right : means sprites turned to the right when the character is walking.
# S_ : means Sprites