如何创建一个for循环来初始化类的对象,而不是一个接一个地执行

2024-06-16 11:36:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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格,然后重复这个过程。有人知道我怎么做到的吗?提前谢谢


Tags: informainmodedefdisplayrangescreen
3条回答

使用带有step参数的范围。在

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

^{pr2}$

将代码改为如下所示:

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)

如果使用嵌套列表理解,可以在一行中得到Pavel的答案

invaders =  [ Invader1(screen, (x, y)) for x in range(0, 750, 75) for y in range(0, 325, 75) ]

相关问题 更多 >