Ошибка "local variable referenced before assigment"

Возникла проблема с кодом. Пожалуйста, укажите на ошибки, если таковые имеются.

import pygame
pygame.init()
display_w = 800
display_h = 600
display = pygame.display.set_mode((display_w, display_h))
pygame.display.set_caption('softgame')
logo = pygame.image.load('icon.png')
pygame.display.set_icon(logo)
class Enemy:
    def _init_(self, x, y, width, height, speed):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.speed = speed

    def move(self):
        if self.x >= -self.width:
            pygame.draw.rect(display, (150,20,200), (self.x, self.y,self.width, self.height))
            self.x -= self.speed
        else:
            self.x = display_w - 50

pers_width = 60
pers_height = 100

enemy_width = 20
enemy_height = 70


make_jump = False
dy = 20

pers_x = display_w // 4
pers_y = display_h - 100 - pers_height

enemy_x = display_w - 20
enemy_y = display_h - enemy_height - 100

run = False
xd = 20


def rungame():
    global make_jump, make_up
    game = True
    enemies = []
    create_enemies(enemies)

    def create_enemies(enemies):
        enemies.append(Enemy(display_w + 50, display_h - 170, 20, 70, 4))

    def draw_enemies(enemies):
        for x in enemies:
            x.move()


    global make_jump
    def jump():
        global pers_y, make_jump, dy
        if dy >= -20:
            pers_y -= dy
            dy -= 1
        else:
            dy = 20
            make_jump = False
    game = True
    while game:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit
                quit()
        keys = pygame.key.get_pressed()
        if keys[pygame.K_SPACE]:
            make_jump = True
        if make_jump:
            jump()
        display.fill((245,245,245))
        draw_enemies(enemies)
        pygame.draw.rect(display,(251,186,0),(pers_x, pers_y, pers_width, pers_height))
        pygame.draw.rect(display,(36,0,255),(enemy_x, enemy_y, enemy_width, enemy_height))
        pygame.display.update()
        pygame.time.Clock().tick(60)
rungame()


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

Автор решения: Danis

в rungame вы вызываете create_enemies и только потом создаёте её. Чтобы исправить это поменяйте местами вызов и создание функции

Создать объект Enemy не получится, потому что надо писать __init__, а не _init_.

→ Ссылка