运行while循环时更改方法变量

时间:2017-01-21 20:11:57

标签: python function class while-loop

我偶然发现了一个问题,我希望在运行连续的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循环!

1 个答案:

答案 0 :(得分:3)

问题是因为你创造了

rect1 = Rect(black, rect1_randomx, 200, 100, 100)

while循环中,所以你一直重置它以开始位置。

您必须在rect1

之前创建while