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 个空格并重复该过程。有谁知道我将如何实现这一目标?提前致谢

4

4 回答 4

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)
于 2013-03-15T19:20:09.477 回答
0

如果您使用嵌套列表推导,您可以在一行中得到 Pavel 的全部答案

invaders =  [ Invader1(screen, (x, y)) for x in range(0, 750, 75) for y in range(0, 325, 75) ]
于 2013-03-15T19:34:14.843 回答
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)
于 2013-03-18T01:18:02.700 回答
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 对象

于 2013-03-27T11:50:18.383 回答