2017-01-21 60 views
-1

我偶然发现了一个问题,我想通过连续While循环运行时增加类init方法中的变量。在运行while循环时更改方法变量

我的初始化方法创建一个矩形和我的其他方法绘制(自我)绘制到屏幕上。在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

2个独立的局部变量创建rect1?我们不知道,因为你没有展示足够的代码。 –

回答

3

问题是因为你创建

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

while循环,使您重置这一切开始位置的时间。

你以前while

+0

哈哈我现在觉得很蠢! –

+0

我会给你接受,感谢您的帮助! –