2014-10-31 57 views
0

我試圖用PyGame for循環創建多個矩形,但我並不十分清楚如何做到這一點。我的第一種方法是將所有矩形實例存儲在一個數組中,但後來遇到了另一個問題,即如何爲其分配.get_rect()。所以我這樣做:如何在Pygame中創建多個矩形實例?

def MultiRect(amount): 
    objects = [] 
    objectsRect = [] 

    for i in range(0, amount): 
     objects.append(pygame.Surface([200,100]).convert()) 
     objects[i].fill((130,130,130)) 
     objectsRect.append(objects[i].get_rect()) 

所以我試圖做的是使兩個數組,一個存儲實例和其他商店的instance.get_rect(),但我知道這是錯誤的方式做到這一點,我也得到多個out of range錯誤。有沒有另外一種方法可以解決這個問題?

回答

0

你可以只直接實例一堆Rects,像

for i in range(0,amount): 
    objectsRect.append(pygame.Rect(left,top,width,height)) 

還是我誤解你的問題?

+0

如果我使用這個,是否需要使用'.get_rect()'方法來評估碰撞?因爲我的印象是矩形的每個實例都應該有'pygame.Surface.get_rect()'的返回值。 – px06 2014-10-31 22:01:51

+0

@Toby如果您只需要使用Rect對象,則可以像rectObject.colliderect(otherRectObject)那樣測試碰撞。 [pygame文檔](http://www.pygame.org/docs/ref/rect.html#pygame.Rect.contains)對此有幫助 – 2014-11-01 01:22:55

0

那麼,你的代碼實際上不工作?我在這裏沒有看到任何問題。然而,爲什麼在方括號中傳遞表面大小卻很奇怪,但這可能不會導致錯誤,這也是可以接受的。你什麼時候有out of range錯誤?