我偶然发现了一个问题,我希望在运行连续的While循环时在类 init 方法中增加变量。
我的 init 方法创建一个矩形,我的另一个方法draw(self)将其绘制到屏幕上。在While循环内部,我将矩形的y位置递增7(rect1.y + = 7),然后调用draw方法将对象打印到屏幕。 现在,问题是对象不会按预期向下移动并且是静态的。
请注意,while循环位于一个函数内部,该函数基本上每次更新屏幕,而Class在该函数之外。我还使用它的所有属性初始化实例,并在while循环中使用该实例调用draw()方法。
很抱歉,如果我不能解释清楚这一点,但我希望你们至少能够了解最新情况。
有什么建议吗?
班级:
class Rect():
def __init__(self, color, x, y, w, h):
self.color = color
self.x = x
self.y = y
self.w = w
self.h = h
def draw(self):
pygame.draw.rect(gameDisplay, self.color, [self.x, self.y, self.w, self.h])
while循环中的代码:
gameDisplay.fill(white)
rect1 = Rect(black, rect1_randomx, 200, 100, 100)
rect1.y += rect_speed
rect1.draw()
rect_speed = 7在函数内部,但不是while循环!
答案 0 :(得分:3)
问题是因为你创造了
rect1 = Rect(black, rect1_randomx, 200, 100, 100)
在while
循环中,所以你一直重置它以开始位置。
您必须在rect1
while