Попытка создания игры в python(pygame),я новичок,поэтому не понимаю в чём же ошибка. Как-то исправлял,появлялся только чёрный экран и работала музыка

import pygame
pygame.init()
pygame.mixer.music.load("music.mp3")
SCREEN_WIDTH=800
SCREEN_HEIGHT=600
WHITE=(255,255,255)
font_name=pygame.font.match_font('arial')
def draw_text(surf, text, size, x, y):
    font=pygame.font.Font(font_name, size)
    text_surface=font.render(text, True, WHITE)
    text_rect=text_surface.get_rect()
    text_rect.midtop= (x, y)
    surf.blit(text_surface, text_rect)

bg=pygame.image.load("bg.png")

class Player(pygame.sprite.Sprite):
    right=True
    def __init__(self):
        super().__init__()
        self.image=pygame.image.load('lisa1.png')
        self.rect=self.image.get_rect()
        self.change_x=0
        self.change_y=0
        self.score=0
    def update(self):
        self.calc_grav()
        self.rect.x += self.change_x
        block_hit_list=pygame.sprtite.spritecollide(self, self.level.platform_list, False)
        for block in block_hit_list:
            if self.change_x > 0:
                self.rect.right=block.rect.left
            elif self.change_x < 0:
                self.rect.left=block.rect.right
        self.rect.y += self.change_y
        block_hit_list=pygame.sprite.spritecollide(self, self.level.platform_list, False)
        for block in block_hit_list:
            if self.change_y > 0:
                self.rect.bottom=block.rect.top
            elif self.change.y < 0:
                self.rect.top=block.rect.bottom
            self.change_y=0
    def calc_grav(self):
        if self.change_y==0:
            self.change_y=1
        else:
            self.change_y += .95
        if self.rect.y >= SCREEN_HEIGHT - self.rect.height and self.change_y >=0:
            self.change_y=0
            self.rect.y=SCREEN_HEIGHT - self.rect.height
    def jump(self):
        self.rect.y += 10
        platform_hit_list=pygame.sprite.spritecollide(self, self.level.platform_list, False)
        self.rect.y -= 10
        if len(platform_hit_list) > 0 or self.rect.bottom >= SCREEN_HEIGHT:
            self.change_y= -10
            self.score += 1
    def go_left(self):
        self.change_x= -9
        if(self.right):
            self.flip()
            self.right=False
    def go_right(self):
        self.change_x=9
        if (not self.right):
            self.flip()
            self.right=True
    def stop(self):
        self.change_x=0
    def flip(self):
        self.image=pygame.transform.flip(self.image, True, False)
        
class Platform(pygame.sprite.Sprite):
    def __init__(self, width, height):
        super().__init__()
        self.image=pygame.image.load('platforma.png')
        self.rect=self.image.get_rect()

class Level(object):
    def __init__(self, player):
        self.platform_list=pygame.sprite.Group()
        self.player=player

class Level_01(Level):
    def __init__(self, player):
        Level.__init__(self, player)
        level= [
            [210, 32, 500, 500],
            [210, 32, 200, 400],
            [210, 32, 600, 300],
        ]
        for platform in level:
            block=Platform(platform[0], platform[1])
            block.rect.x=platform[2]
            block.rect.y=platform[3]
            block.player=self.player
            self.platform_list.add(block)

def main():
    pygame.init()
    size=[SCREEN_WIDTH, SCREEN_HEIGHT]
    screen=pygame.display.set_mode(size)
    pygame.display.set_caption('Миллионая попытка создать игру')
    player=Player()
    level_list=[]
    level_list.append(Level_01(player))
    current_level_no=0
    current_level=level_list[current_level_no]
    active_sprite_list=pygame.sprite.Group()
    player.level=current_level
    player.rect.x=340
    player.rect.y=SCREEN_HEIGHT - player.rect.height
    active_sprite_list.add(player)
    done=False
    clock=pygame.time.Clock()
    while not done:
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                done=True
        if event.type==pygame.KEYDOWN:
            if event.key==pygame.K_LEFT:
                player.go_left()
            if event.key==pygame.K_RIGHT:
                player.go_right()
            if event.key==pygame.K_UP:
                player.jump()
        if event.type==pygame.KEYUP:
            if event.key==pygame.K_LEFT and player.change_x < 0:
                player.stop()
            if event.key==pygame.K_RIGHT and player.change_x > 0:
                player.stop()
    active_sprite_list.update()
    current_level.update()
    if player.rect.right > SCREEN_WIDTH:
        player.rect.right=SCREEN_WIDTH
    if player.rect.left < 0:
        player.rect.left=0
    current_level.draw(screen)
    active_sprite_list.draw(screen)
    draw_text(screen, "Jump:  " + str(player.score), 48, SCREEN_WIDTH / 2, 10)
    clock.tick(30)
    pygame.display.flip
    pygame.quit()
if __name__ == '__main__':
  main()         

Вот такая ошибка:

Traceback (most recent call last):
  File "C:\igra\trhrthr.py", line 145, in <module>
    main()
  File "C:\igra\trhrthr.py", line 133, in main
    current_level.update()
AttributeError: 'Level_01' object has no attribute 'update'

Ответы (1 шт):

Автор решения: Danil Maltsev

current_level.update() cюда вам нужно вписать значение. Какой уровень. Метод update() не может быть пустым так как вы обновляйте список добавляя новый елемент. Поместите туда елемент который хотите добавить

→ Ссылка