2013-06-03 56 views
0

使用pygame,我試圖從兩個較小的列表中創建一個更大的列表。這需要在遊戲循環期間完成,因爲這些列表包含確定與角色碰撞檢測的對象pygame.Rect當我需要在while循環中合併兩個數組時,我該如何避免遞歸添加數組?

charArray.append(guy.rect) 
collideArray = newMap.rectArray + charArray 

當然,因爲這是在遊戲循環,guy.rect遞歸加入到charArray,並collideArray遞歸添加newMap.rectArray本身,創造了越來越大的列表中的每個幀,最終只是破壞幀率。

有沒有一種方法可以清空每一幀的列表,以便它們只是被重新定義每一幀?或者還有其他一些我需要採取的方法嗎?

+0

當你說「遞歸」,你的意思是」循環「,還是有遞歸涉及某處?此外,'newMap.rectArray'會在循環中更改還是固定? –

+0

當需要繪製新區域時,newMap.rectArray將在循環中更改。同男人一樣(男人是非玩家角色)。當我說它是遞歸的時候,我的意思是數組不斷被添加到自身上。 print(len(collideArray))的輸出每增加一幀。 – lyon

回答

2

最簡單的方法「空」在每幀的目的,每個數組只是將它們設置爲空,在每個循環的結尾:

while game==True: 
    #your game code goes here 
    charArray,collideArray = [],[] 
+0

我認爲這可能也有效,但它似乎並沒有清空數組(可能只是重新初始化它們),導致同樣的結果。我試過把這兩個前後兩行我有問題 – lyon

+0

是'guy.rect'遞歸,以便它添加所有反正嗎? –

+0

guy.rect包含一個pygame.Rect對象。 print(guy.rect)的輸出是 lyon

相關問題