Приветствую!
Хотел бы узнать, как реализовать анимацию такого объекта, как снаряд, который должен работать только после нажатия на кнопку. Сейчас после нажатия не происходит ничего, ошибок тоже нет.
Вот собственно код:
 import pygame
pygame.init()
name = "Best Game Ever"
logo = pygame.image.load('logo.png')
disp_width=1000 #Размер дисплея
disp_height=600
player_walk_left = [pygame.image.load('walk left/left1.png'), pygame.image.load('walk left/left2.png'), pygame.image.load('walk left/left3.png'), pygame.image.load('walk left/left4.png')]
player_walk_right = [pygame.image.load('walk right/right1.png'), pygame.image.load('walk right/right2.png'), pygame.image.load('walk right/right3.png'), pygame.image.load('walk right/right4.png')]
player_stand_right = [pygame.image.load('stand/right1.png'), pygame.image.load('stand/right2.png'), pygame.image.load('stand/right3.png'), pygame.image.load('stand/right4.png')]
player_stand_left = [pygame.image.load('stand/left1.png'), pygame.image.load('stand/left2.png'), pygame.image.load('stand/left3.png'), pygame.image.load('stand/left4.png')]
disp = pygame.display.set_mode((disp_width, disp_height))
pygame.display.set_caption(name)
pygame.display.set_icon(logo)
frame = pygame.time.Clock()
class player(object):
    def __init__(self, player_x, player_y, width, height):
        self.player_x = player_x
        self.player_y = player_y
        self.width = width
        self.height = height
        self.player_speed = 5
        self.jump = False
        self.left = False
        self.right = False
        self.anim_count = 0
        self.jump_dist = 7
        self.direct = 1
        self.stand_right = True
        self.stand_left = False
    def draw(self, disp):
        if self.anim_count + 1 >= 16:
            self.anim_count = 0
        if self.left:
            disp.blit(player_walk_left[self.anim_count//4], (self.player_x,self.player_y))
            self.anim_count += 1
        elif self.right:
            disp.blit(player_walk_right[self.anim_count//4], (self.player_x,self.player_y))
            self.anim_count +=1
        else:
            if self.direct == 1:
                disp.blit(player_stand_right[self.anim_count//4], (self.player_x,self.player_y))
                self.anim_count +=1
            else:
                disp.blit(player_stand_left[self.anim_count//4], (self.player_x,self.player_y))
                self.anim_count +=1
class fireball_one(object):
    fb_left = [pygame.image.load('fireball/fb1.png'), pygame.image.load('fireball/fb2.png'), pygame.image.load('fireball/fb3.png'), pygame.image.load('fireball/fb4.png'),
               pygame.image.load('fireball/fb5.png'), pygame.image.load('fireball/fb6.png'), pygame.image.load('fireball/fb7.png')]
    def __init__(self, player_x, player_y, facing):
        self.player_x = player_x
        self.player_y = player_y
        self.facing = facing
        self.fb_vel = 8 * facing
    def draw(self, disp):
        for fireball in fireballs:
            self.move()
            self.anim_count = 0
            if self.anim_count + 1 >= 27:
                self.anim_count = 0
            if self.facing == 1:
                disp.blit(self.fb_left[self.anim_count//7], (self.player_x,self.player_y))
                self.anim_count += 1
            else:
                disp.blit(self.fb_left[self.anim_count//7], (self.player_x,self.player_y))
                self.anim_count += 1
    def move(self):
        for fireball in fireballs:
            if fireball.player_x < 500 and fireball.player_x > 0:
                fireball.player_x += fireball.fb_vel  # Moves the bullet by its vel
            else:
                fireballs.pop(fireballs.index(fireball))
                self.anim_count = 0
def redrawGameWindow():
    disp.blit(pygame.image.load('backgroung.png'), (0,0))
    cat.draw(disp)
    for fireball in fireballs:
        fireball.draw(disp)
    pygame.display.update()
cat = player(50, 500, 50, 50)
run = True #Для включенного состояния игры
fireballs = []
while run:
    frame.tick(30)
    for events in pygame.event.get():
        if events.type == pygame.QUIT:  #Выход из игры
            run = False
    keys = pygame.key.get_pressed()
    if keys[pygame.K_f]:
        if cat.direct == -1:
            facing = -1
        else:
            facing = 1
        if len(fireballs) < 10:
            fireballs.append(fireball_one(round(cat.player_x + cat.width//2), round(cat.player_y + cat.height//2), facing))
                                 # This will create a bullet starting at the middle of the character
    if keys[pygame.K_LEFT] or keys[pygame.K_a]:
        if cat.player_x > 5:
            cat.direct = -1
            cat.player_x -= cat.player_speed
            cat.left = True
            cat.right = False
            cat.stand_left = False
            cat.stand_right = False
    elif keys[pygame.K_RIGHT] or keys[pygame.K_d]:
        if  cat.player_x < 970:
            cat.direct = 1
            cat.player_x += cat.player_speed
            cat.left = False
            cat.right = True
            cat.stand_left = False
            cat.stand_right = False
    else:
        if cat.direct == -1:
            cat.stand_left = False
        elif cat.direct == 1:
            cat.stand_right = False
        cat.left = False
        cat.right = False
    if not(cat.jump):
        if keys[pygame.K_SPACE]:
                cat.jump = True
    else:
        if cat.jump_dist >= -7:
            if cat.jump_dist < 0:
                cat.player_y += (cat.jump_dist ** 2) / 3
            else:
                cat.player_y -= (cat.jump_dist ** 2) / 3
            cat.jump_dist -= 1
        else:
            cat.jump = False
            cat.jump_dist = 7
    redrawGameWindow()
pygame.quit()