2013-03-15 57 views
1
def main(): 
    screen = pygame.display.set_mode((675, 480)) 
    pygame.display.set_caption("Space Invaders") 

    background = pygame.Surface(screen.get_size()) 
    background.fill((0, 0, 0)) 

    allSprites = pygame.sprite.Group() 

    for j in range(0, 5): 
     for i in range(0, 10): 
      invader1 = Invader1(screen, (0, 0)) 
      invader1.x += 75 
      invader1.add(allSprites) 
     invader1.y += 75 

我想爲項目創建一個空間入侵者遊戲,但即時通訊對於for循環有點麻煩,我想創建10個敵人的實例,而不必輸入每個敵人,我知道for循環是答案,即時通訊只是不知道如何初始化它。我想在(0,0)開始第一個敵人,並在X軸上移動每個敵人75個空格,在創建10個敵人後,在Y軸上向下移動75個空格並重復該過程。有誰知道我會如何實現這一目標?在此先感謝如何創建一個for循環來初始化我的類的對象,而不是逐個地執行它

+0

:? – Drewdin 2013-03-15 19:25:42

回答

0

更改您的代碼看起來像這樣:

def main(): 
screen = pygame.display.set_mode((675, 480)) 
pygame.display.set_caption("Space Invaders") 

background = pygame.Surface(screen.get_size()) 
background.fill((0, 0, 0)) 

allSprites = pygame.sprite.Group() 

for j in range(0, 5): 
    for i in range(0, 10): 
     invader1 = Invader1(screen, (75*i,75*j)) 
     invader1.add(allSprites) 
6

使用範圍與step參數。

In [4]: range(0, 75 * 5, 75) 
Out[4]: [0, 75, 150, 225, 300] 

 

allSprites = pygame.sprite.Group() 
for y in range(0, 75 * 5, 75): 
    for x in range(0, 75 * 10, 75): 
     Invader1(screen, (x, y)).add(allSprites) 
+0

它們被添加到'sprite.Group()'中,所以你不需要列表。 – ninMonkey 2013-03-16 02:23:13

0

你可以得到帕維爾的答案都在一個行,如果你使用嵌套列表理解

invaders = [ Invader1(screen, (x, y)) for x in range(0, 750, 75) for y in range(0, 325, 75) ] 
0
invader_list = [] 
for y in range(n): 
    for x in range(10): 
     invader_list.append(Invader(x * w, y * h)) 

1)創建列表來存儲對象

2)使一個for循環迭代n次(行數)

3)作出嵌套的for循環迭代10次(柱的側向承載力數)

4)在兩個for循環中,用x * w和y * h製作Invader對象,範圍爲(0,10)中的x:

相關問題