Я пытаюсь выполнить симуляцию отскока мяча с помощью модуля Pygame в Python 3.7.3.Класс, который у меня есть, отображает шары, но не работает с движением.Ошибка: «локальная переменная x указана перед присваиванием».Я думаю, это означает, что он локальный, но должен быть глобальным, однако, чтобы иметь количество переменных в качестве переменной (поэтому я могу сказать, сколько нужно генерировать), я не знаю, как это исправить.
Я пытался прочитать другие вопросы, но никто не решил мою проблему.Я могу заставить один мяч подпрыгивать по экрану при работающем столкновении границ, но не тогда, когда я делаю объект ориентированным.Я также поэкспериментировал с переменными собственного типа, которые относятся к каждому отдельному мячу, но это не сработало.
class BallEntity():
def __init__(self, radius):
x = random.randint(radius, win_width - radius)
y = random.randint(radius, win_height - radius)
pos = x, y
pygame.draw.circle(win, (248, 24, 148), pos, radius)
dx = random.randint(-5, 5)
dy = random.randint(-5, 5)
BallEntity.movement(self)
def movement(self):
if x <= r1 or x >= win_width - r1:
dx = -dx
elif x > r1 and x < win_width -r1:
x += dx
if y <= r1 or y >= win_height - r1:
dy = -dy
elif self.y > r1 and self.y < win_height -r1:
y += dy
numbBalls = 8
r1 = 8
for i in range(numbBalls):
BallEntity.__init__(i, r1)
Я ожидаю, что шары будут печататься и перемещаться при столкновении, но вместо этого я получаю ошибку "localпеременная x указана перед присваиванием. "