我正在尝试使用python3.7.3中的Pygame模块进行球反弹模拟。我所在的班级展示球,但不配合运动。错误是“分配前引用的局部变量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)
我希望球在碰撞工作时打印和移动,但是我得到了错误“赋值前引用的局部变量x”
global win,x,y
让我们删除未定义的x`x
,y
用于内部class
而不是global variable
到各个圆点。你知道吗相关问题 更多 >
编程相关推荐