2017-01-21 125 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

我會給你接受,感謝您的幫助! –